2013-10-21 88 views
-5

我得到了以下的問題:搜索和計數最大價值

寫,提示用戶輸入10個正整數,然後找到其出現的最大的價值和數量的Java程序。提示:使用While循環。

Sample Run: please enter 10 numbers:

1

2

46

1

0

5

46

46

6

27

The biggest value is: 46 and It occurs 3 times.


下面是我的解決辦法:

 import java.util.*; 
     public class numbers{ 


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


      int n=0; 
      int H=1; 
      int y=0; 
     System.out.println("please Enter 10 numbers:"); 
     while (n<10){ 
      int f=input.nextInt(); 

      if (f>n) 
       y=f; 

      else if(y==f) 
       H++;} 

    System.out.println("the biggest value is: "+ 
         n+" and it is occurs "+ 
         H+" times"); 
     }} 

但問題的結果是不正確的:「(

我應該做


感謝,但它?!使無限循環!!

 import java.util.*; 
     public class numbers{ 


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


     int n=0; 
     int H=0; 
     int y=0; 
     System.out.println("please Enter 10 numbers:"); 
     while (n<10){ 
     int f=input.nextInt(); 

     if (f>y){ 
     y=f; 
     H=1;} 
     else if(y==f){ 
      H++; 
      n++; } 
      } 
     System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times"); 
      }} 

終於讓我找到我的錯誤 「感謝您的幫助」

糾正我的代碼

 import java.util.*; 
     public class numbers{ 
     //main method 

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


     int n=0; 
     int H=0; 
     int y=0; 
     System.out.println("please Enter 10 numbers:"); 
     while (n<10){ 
     int f=input.nextInt();//f the numbers 

     if(y==f) 
     H++;//to count how many repeat 


     if (f>y){ 
     y=f;// if numbers greater than y put value of f in y 

     H=1;} 
     n++;//to update counter 
     } 
     System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times"); 
     }// end main 
     }// end class 
+3

它是不是正確?什麼不工作?那是什麼標題? –

+1

我認爲你的標題 –

+0

發生了什麼,你的while循環有缺陷。切換數字時不會重置「H ++」計數器,因此您只需計算所有重複數字。例如'1 2 2 4 4 9'將輸出4,因爲有4個單獨的數字有重複。 –

回答

2

第一個錯誤後:

System.out.println("the biggest value is: "+n+" and it is occurs "+H+" times");}}

n是你TryCount。應該是:

System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");}}

二錯誤:

您都加大了「最高」數的計數:else if(y==f) H++; - 但你沒有考慮到會發生什麼,改變什麼時候?所以,輸入1,1,1,1,1,1,2,會給你「7次出現2次」 - 這是錯誤的。

你需要「重啓」(設置爲「1」)的「最高-Occurence數」,當一個新的最高數量記錄:

if (f>y){ 
    y=f; 
    H = 1; 
} 

第三個錯誤:上面已經定:應該是f>yf>H

提示:給你的變量meaningfull名字 - 所以你不要弄亂那麼容易:

import java.util.*; 
public class numbers{ 

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

    int runs=0; 
    int highestCount=0; 
    int highestValue=0; 

    System.out.println("please Enter 10 numbers:"); 
    while (runs<10){ 
     int inputValue=input.nextInt(); 

     if (inputValue>highestValue){ 
     highestValue=inputValue; 
     highestCount = 1; 
     } 

     else if(inputValue==highestValue){ 
     highestCount++; 
     } 
    } 
    System.out.println("the biggest value is: "+highestValue+" and it is occurs "+highestCount+" times"); 
    } 
} 

更容易閱讀,不是嗎?