2013-12-13 116 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您在循环做他们的任何比较之前。

相关问题