2013-10-25 29 views
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

+0

所以,你需要跳過'0',打印'1-9 ',跳過'10',打印'11-19'等? – nhgrif

+0

@nhgrif OP持有櫃檯爲數字0和49看起來他之間的陣列/她想要打印這些數字哪一個計數器不爲0 –

+0

是啊,我正要重讀問題後刪除我的意見。 – nhgrif

回答

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

+0

我覺得OP想知道如果原來的數組包含'i',如果不改編'[I]> 0'。 – Josh

+1

當用戶輸入一個數字時,他明顯增加了'arr [in]'。因此,'arr [i] = j''意味着''i' *的出現''。我錯過了什麼嗎? –

+0

不,我是一個缺少'ARR [中] ++'線,造成自己的種種困惑。對不起'回合。 – Josh

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]); 
    }