java - 计算整数的位数

标签 java arrays int

我的代码应该提示用户输入一个整数并计算该整数中每个数字的出现次数。但它什么也没输出。请帮忙,这是我的代码。

import java.util.Scanner;

    public class NumberCounts {

    public static void main(String [] args) {
         Scanner scan = new Scanner(System.in);

         int arr [] = new int [10];
         int num;
         int outcome;

         System.out.println(" Enter a number: "); 
         num = scan.nextInt();

         while ( num != 0){
             outcome = num % 10;
             arr[num % 10]+=1;
             num /= num;
         }

         for ( int i = 0; i <= arr.length; i++){
             System.out.println(i + " : " + arr[i]);
         }

     }
}

最佳答案

在你的 while 里面循环,你正在除num本身,然后将结果分配回 num 。这将使 num等于 1永远。将其更改为

num /= 10;

这将删除最后一位数字。

此外,您已经计算了最后一位数字并将结果存储在 outcome 中。您不妨使用它:

arr[outcome]+=1;

然后,当您进入循环打印数组时,在条件下,始终使用 <处理最后一个索引后停止的数组长度 length - 1 。这将防止ArrayIndexOutOfBoundsException正在等待出现。

for (int i = 0; i < arr.length; i++){

关于java - 计算整数的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50476664/

相关文章:

java - 重构 - 在 Netbeans 8.0.2 中提取方法对象

对两个不同大小的数组进行组合和排序。然后在C程序中将其替换为0和1

python - 使用位掩码查找数据间隙

c# - 使用自定义格式字符串将字符串解析为 int/long

java - 两个整数集合之间的差异

java - 如何将一个倒计时器嵌套在另一个倒计时器中?

java - 异常-将异常写入包裹

java - 使用 Java 复制某些节点

c - 参数中的数组没有变量初始化

c - 打印文件中的子字符串