java在循环中查找最高、最低和平均值
我知道我可能做错了一些小事。我希望它在循环结束时打印最低的数字,等等,但它总是打印最低的数字为零。如何使退出机制不将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);
}
}
# 1 楼答案
您的
highest
和lowest
变量都从0开始。因此,如果您的数字都是负数,那么highest
将不正确地得到0。如果您的数字都是正数,那么lowest
将不正确地得到0只需从
highest = Integer.MIN_VALUE
和lowest = Integer.MAX_VALUE
开始,然后第一次迭代将以正确的highest
和lowest
值结束# 2 楼答案
在更改高值和低值之前,首先检查数字是否为零
在对循环中的
highest
和lowest
进行任何比较之前,还需要初始化它们