1

我的问题与计算数组中的整数有关。到目前为止,这是我的代码。

import java.util.Scanner; 

public class Frequency { 
  public static void main(String[]args) { 
    Scanner kbd = new Scanner(System.in); 
    System.out.print("enter numbers: ");
    int[] arr = new int[51]; 
    for(int i = 0; true; i++) { 
      int in = kbd.nextInt(); 
      if(in < 0)break; 
      else if(in > 50)break; 
      else arr[in]++; 
    } 
    for(int i = 0; i < arr.length; i++) { 
      System.out.println(i+" occurrences of "+arr[i]); 
    } 
  } 
}

问题输出的方式是正确的,除了我需要某种方法来过滤掉所有出现 0 的数字,以便只有输入中的数字显示在输出中;而不是 0 到 50 之间的每个数字。

4

2 回答 2

4

你已经写了一个if语句,当用户输入一个负数时停止你的第一个循环。只需为第二个循环编写相同的内容:

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

旁注:我也交换arr[i]i

于 2013-10-25T17:31:46.050 回答
0
 for(int i = 0; i < arr.length; i++) { 
        if(!(i==0 || i%10==0) && arr[i]!=0)
      System.out.println(i+" occurrences of "+arr[i]); 
    } 
于 2013-10-25T18:06:58.690 回答