2013-12-13 169 views
0

我知道這可能是一件小事,我做錯了。我希望它在循環結束時打印最低的數字等等,但它始終打印最低的零。我如何獲得它不會將退出機制零作爲最低數量。在循環中查找最高,最低和平均值

有什麼建議嗎?

class HighLowAve 
{ 
    public static void main (String[]args) 
    { 
     int num =0; 
     int sum; 
     int highest; 
     int lowest; 
     int index; 
     Double average; 

     highest = num; 
     lowest = num; 
     sum = 0; 
     index = 0; 

     do 
     { 
      System.out.println("Enter a number. Press zero to quit "); 
      num = EasyIn.getInt(); 

      if (num > highest) 
      { 
       highest = num; 
      } 
      else if (num < lowest) 
      { 
       lowest = num; 
      } 

      sum = sum + num; 
      index++; 
     }while (num !=0); 

     average = (double) sum/(index-1); 

     System.out.println("The highest number was " + highest); 
     System.out.println("The lowest number was " + lowest); 
     System.out.println("The average number was " + average);    
    } 
} 
+0

*「一個小小的錯誤」*直到你知道解決方案,它似乎有點冒失地聲稱它是小的或一個。 –

+0

到目前爲止,唯一沒有工作的部分是找到正確的最低數字,但我知道你的意思。 – Pizzaman

回答

7

highestlowest兩個變量從0開始。所以,如果你的號碼都是負的,你會得到0的highest,不正確。如果你的數字都是正數,你會得到一個lowest爲0,不正確。

剛從highest = Integer.MIN_VALUElowest = Integer.MAX_VALUE開始,然後第一次迭代將以正確的highestlowest值結束。

0

首先在更改高值和低值之前檢查數字是否爲零。

do 
    { 
     System.out.println("Enter a number. Press zero to quit "); 
     num = EasyIn.getInt(); 

     if (num == 0) break; 

     if (num > highest) 
     { 
      highest = num; 
     } 
     else if (num < lowest) 
     { 
      lowest = num; 
     } 

     sum = sum + num; 
     index++; 
    }while (num !=0); 

你也需要初始化highestlowest您在循環做他們的任何比較之前。

相關問題