2015-10-04 27 views
2

在我的實驗室中,我們必須輸入用戶輸入的數字,直到輸入「0」。然後程序將查找最大值,計算出現次數,並輸出兩個數字。最大值和發生次數。

這裏是我的代碼:

Scanner scan = new Scanner(System.in); 

    int max = Integer.MIN_VALUE, count = 0, num; 

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

    while (num != 0){ 
    System.out.println ("Enter a number: "); 
    num = scan.nextInt(); 
    if (num >= max){ 
     max = num; 
     count ++; 
    } 
    } 
    System.out.println("\nMax number was: " + max); 
    System.out.println("Number of occurences: " + count); 

現在,當它輸出,有時我得到正確的答案,有時沒有。我想我只是有錯誤的循環或者計數器需要重置,但我無法弄清楚。

例如:

如果我輸入:3,5,2,5,5,5,0

輸出讀取: 最大數爲:5 數OCCURENCES的:4

但是,如果我輸入:3,5,9,2,5,9,0

輸出讀取: 最大數爲:9 編號OCCURENCES的:3

只是尋求一些建議。幫助將不勝感激:d

回答

2

如果num > max,那麼它的最大的首次出現,並count應設置爲1,如果num == max,那麼它的最大的另一個發生,count應該增加。

此外,正如@doelleri在評論中正確提到的,第一個數字被忽略。

+1

此外,第一個輸入被忽略。 – doelleri

+0

我以爲實際上發佈後,我試圖修復它。意識到它應該是一個'do-while'循環而不是'while'。謝謝! :D – Tyler

+0

它不一定是一個while while循環。只是不要在循環之前讀取任何int。將num初始化爲除0之外的任何值。 –

0

當找到新的最大值時,您需要重置計數變量。

0

您需要重置計數器當您觀察到新的最大值時。你也應該使用do-while而不是while循環。因爲do-while循環總是執行一次,因此您可以在循環中接受用戶輸入。

Scanner scan = new Scanner(System.in); 
    int max = Integer.MIN_VALUE, count = 0, num; 
    System.out.println ("Enter a number (Enter a 0 to stop): "); 
    do { 
     System.out.println ("Enter a number: "); 
     num = scan.nextInt(); 
     if (num >= max){ 
     count = num == max ? count+1 : 1; 
     max = num; 
     } 
    }while(num != 0); 
    System.out.println("\nMax number was: " + max); 
    System.out.println("Number of occurences: " + count); 
+1

感謝您的建議!我得到它的工作。我是一個結界,所以我仍然在研究正確的循環使用。 – Tyler

1

在這裏使用的最佳循環是do...while

這裏是一個校正代碼:

你必須重置只有當新max被發現count變量。

  do{ 
      System.out.println ("Enter a number: "); 
      num = scan.nextInt(); 
      if (num > max){ 
       max = num; 
       count = 1; 
      } else if (num == max){ 
       count++; 
      } 
      }while (num != 0); 

      System.out.println("\nMax number was: " + max); 
      System.out.println("Number of occurences: " + count); 
相關問題