2017-03-16 27 views
-1

編寫一個讀取 1和100之間的整數的程序,並統計每個(您應該將數字存儲在數組中)的發生次數。輸出應該按升序排列。假設輸入結束時,用戶輸入0.程序讀取1到100之間的整數並計算每個數的出現

嗨,大家好,我知道這個問題已經發布過,也許很多次,但由於我是一個完整的初學者在Java,我不完全理解所發佈代碼的複雜性。我剛開始學習Java類,並希望能幫助我弄清楚如何讓我的程序在最後輸出正確的事件。我很接近得到答案,但我無法弄清楚我的生活!提前致謝!

import java.util.Scanner; 
public class Problem1 { 

public static void main(String[] args) { 

    //declarations 
    int [] myArray = new int [100]; 
    int input = 5; 
    Scanner keyboard = new Scanner(System.in); 

    //input and processing 
    System.out.println("Please enter integers between 1 and 100 (enter 0 to stop): "); 
    while (input != 0) 
    { 

     input = keyboard.nextInt(); 

     for (int i = 0; i < myArray.length; i++) 
     { 
      if (input == i) 
      { 
       myArray[i] = input; 
      } 
     } 

    } 

    //output (This is where I need help!!!!) 
    for (int k = 0; k < myArray.length; k++) 
    { 
     if (myArray[k] != 0) 
     { 

      System.out.print(k + " occurs " + myArray[k] + " time"); 
      if (myArray[k] > 1) 
      { 
       System.out.println("s"); 
      } 
      else 
       System.out.println(""); 

     } 
    } 
    keyboard.close(); 
} 

}

+0

這是如何不同於你的其他問題http://stackoverflow.com/questions/42825397/program-that-reads-in-ten-numbers-and-displays-the-number-of-distinct-numbers-an –

+0

以及爲什麼你有兩個賬戶? –

+0

[「提問作業幫助的問題必須包括您迄今爲止解決問題所做的工作摘要,以及您解決問題的難點描述。」](http://stackoverflow.com/china /主題) –

回答

0

您正在存儲由所述陣列中的所述用戶輸入的號碼。相反,您應該在陣列的每個位置存儲一個計數器以獲取相應的整數。當用戶輸入一個數字時,你應該增加相應的計數器。

你的代碼的第二部分(輸出結果)似乎沒問題。這是第一個需要修復的問題。

0

我覺得第一個for循環應該是這樣的:

for (int i = 0; i < myArray.length; i++) 
    { 
     if (input == i) 
     { 
      myArray[i] += 1; 
     } 
    } 

} 

這應該存儲加1,每次的數字出現陣列。

相關問題