有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);            
    }
}

共 (2) 个答案

  1. # 1 楼答案

    您的highestlowest变量都从0开始。因此,如果您的数字都是负数,那么highest将不正确地得到0。如果您的数字都是正数,那么lowest将不正确地得到0

    只需从highest = Integer.MIN_VALUElowest = Integer.MAX_VALUE开始,然后第一次迭代将以正确的highestlowest值结束

  2. # 2 楼答案

    在更改高值和低值之前,首先检查数字是否为零

        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进行任何比较之前,还需要初始化它们