我正在编写一个方法,它接受用户整数输入并显示总计,平均值,最大值和最小值。
我有总工作和平均工作但我得到最大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();
}
答案 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
。并且您希望将数字保留为max
和min
而不是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;