Java 试图用Scanner在数组中计算整数出现次数来修复项目,输出结果是荒谬的

Java 试图用Scanner在数组中计算整数出现次数来修复项目,输出结果是荒谬的,java,Java,这是程序在它的当前状态,输出是难以置信的疯狂,我试图看看错误在哪里。它要么是while语句,要么是嵌套for循环,但我仍然无法找到任何解决方案,任何帮助都将是惊人的 public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] numbers = new int[100 + 1]; int number = 0; int count = 0;

这是程序在它的当前状态,输出是难以置信的疯狂,我试图看看错误在哪里。它要么是while语句,要么是嵌套for循环,但我仍然无法找到任何解决方案,任何帮助都将是惊人的

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

    int[] numbers = new int[100 + 1];
    int number = 0;
    int count = 0;

    System.out.print("Enter integers between 1 and 100: ");
    while ((number = input.nextInt()) != 0) {
        numbers[number]++;
    }

    for (int m = 0; m < numbers.length; m++) {
        for (int n = 0; n < numbers.length; n++) {
            if (numbers[m] == numbers[n]) {
                count++;
            }

        }
        if (count > 1) {
            System.out.println(numbers[m] + " occurs " + count + " times");
        } else {
            System.out.println(numbers[m] + " occurs " + count + " time");
        }
    }

}
当它应该是这样的时候:

0 occurs 8350 times
0 occurs 8447 times
0 occurs 8544 times
0 occurs 8641 times
0 occurs 8738 times
0 occurs 8835 times
0 occurs 8932 times
0 occurs 9029 times
0 occurs 9126 times
0 occurs 9223 times
0 occurs 9320 times
0 occurs 9417 times
1 occurs 1 time
3 occurs 4 times

不确定为什么要使用两个循环

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

    int[] numbers = new int[100 + 1];
    int number = 0;

    System.out.print("Enter integers between 1 and 100: ");
    while ((number = input.nextInt()) != 0) {
        numbers[number]++;
    }

    for (int m = 0; m < numbers.length; m++) {
        System.out.println(m + " occurs " + numbers[m] + " time" + (numbers[m] == 0 || numbers[m] > 1 ? "s" : ""));
    }

    input.close();

}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
整数[]个数=新整数[100+1];
整数=0;
System.out.print(“输入介于1和100之间的整数:”);
而((number=input.nextInt())!=0){
数字[数字]+;
}
对于(int m=0;m1?“:”);
}
input.close();
}
***编辑

对以下评论的回应

如果您只想打印出现非零的数字,只需添加一个额外的“If”语句

for (int m = 0; m < numbers.length; m++) {
    if(numbers[m] > 0) {
        System.out.println(m + " occurs " + numbers[m] + " time" + (numbers[m] > 1 ? "s" : ""));
    }
}
for(int m=0;m0){
System.out.println(m+“发生”+数字[m]+“时间”+(数字[m]>1?“s”:“”);
}
}

这是你的第一个错误未存储当前输入第二个错误:嵌套的for循环没有意义。您首先应该创建一个不同数字的列表,并在这个简化的列表上进行外部循环。第三个错误:不要这么快就将输出称为“疯狂”。输出是代码的直接结果,代码完全由其作者-您生成。这只是打印出100个数字,并查看每个数字的计数次数,但我如何使其仅显示使用的数字。所以它会这样做:1发生3次42发生1次