无法获得正确的用户输入的最大值和最小值

时间:2014-11-04 19:42:07

标签: java loops while-loop

我正在编写一个方法,它接受用户整数输入并显示总计,平均值,最大值和最小值。

我有总工作和平均工作但我得到最大2147483647和最低-2147483648。

循环必须仅在用户输入-1时结束。

我的代码:

public static void processNumbers()
{
    Menu m = new Menu();
    clrscr();

    int count = 0; // Number of times a value has been added
    int num = 0; // The Integer that the user inputs
    int tot = 0; // The total sum of the inputs
    int avg = 0; // The average value of the inputs
    int max = Integer.MAX_VALUE; // The maximum value of the inputs
    int min = Integer.MIN_VALUE; // The minimum value of the inputs

    System.out.println ("Please enter a whole number (e.g. 150)");

    while ((num = Genio.getInteger()) != -1)
    {
        count ++;

        tot += num;
        avg = tot / count; //Calculate the average the while loop
        if(tot>max) max = tot;
        if(tot<min) min = tot;

        System.out.println("Total \t Average\t Maximum\t Minimum\n");
        System.out.println(tot + "\t" + avg + "\t\t" + max + "\t" + min + "\n");
    }
    clrscr();
    System.out.println("You entered -1, you will now return to the menu!");
    pressKey();
    m.processUserChoices();
}

2 个答案:

答案 0 :(得分:3)

我相信这个

if(tot>max) max = tot;
if(tot<min) min = tot;

应该是

if(num>max) max = num;
if(num<min) min = num;

另外,这个

int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;

应该是

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;

因为int不小于Integer.MIN_VALUE或大于Integer.MAX_VALUE。并且您希望将数字保留为maxmin而不是total

答案 1 :(得分:2)

int max = Integer.MAX_VALUE; // The maximum value of the inputs
int min = Integer.MIN_VALUE; // The minimum value of the inputs

应该交换,因为if(tot>max)永远不会成立。同样,if(tot<min)也永远不会成真。

此外,如果您想获得最小和最大输入,则需要将tot替换为num。总而言之,我们得到了

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
...
if(num>max) max = num;
if(num<min) min = num;