我正在提示用户输入一系列数字,并希望跟踪输入的最大数字并在最后打印出来。例如:
请输入一个数字(输入-1退出):10
输入您的下一个号码(-1退出):7
输入您的下一个号码(-1退出):15
输入您的下一个号码(-1退出):11
输入您的下一个号码(-1退出): - 1
输入的最大数字是15
如何打印这个最大的数字?这是我尝试过的:
int a;
while(true){
System.out.print("Please enter a number (enter -1 to quit):");
a = user.nextInt();
if (a==-1)
{
System.out.println("The largest number is the "+ );
break;
}
}
答案 0 :(得分:3)
您应该在需要时更改的循环外存储变量。
通常,您可以将此数字设置为等于第一个值,但对于这种情况,您可以将其设置为-1,因为这不会改变。试试这个:
int maxNumber = -1;
while(true){
System.out.print("Please enter a number (enter -1 to quit):");
a = user.nextInt();
if(a != -1 && a > maxNumber){
maxNumber = a;
else if(a == -1){
// You can do a check here to be sure they even entered a number.
if(maxNumber == -1){
System.out.println("No number was input.");
} else{
System.out.println("The max number was " + maxNumber);
}
}
}
编辑以获得进一步说明
这将做的是检查用户是否输入的数字大于已输入的数字。如果是,则将值更改为该数字。示例:如果我输入2,然后输入3,则maxNumber将变为3.如果我输入0,则最大数字将保持为3.如果在任何时刻我输入-1,它将会因为您已经设置而中断。
编辑2
就我所说的那样,你会将这个数字设置为等于第一个值'让我解释一下。
用户可以输入除-1之外的任何值。那么,我该如何设置初始最大值?如果我说maxNumber = 0
并且你只输入负数,我将在完成时打印0作为最大数字。话虽这么说,我上面所做的仍然不是万无一失的。如果用户输入的值仅小于-1,我仍然会输出不正确的最大值。因此,最佳做法是获取第一个输入值,并将其设置为最大值,并在遇到新值时更改它。它会将代码更改为:
int maxNumber = -1; // Just a junk value to start.
boolean firstNumber = true;
while(true){
System.out.print("Please enter a number (enter -1 to quit): ");
a = user.nextInt();
if(a == -1 && firstNumber){ // If the user enters -1 right away.
System.out.println("No number was input.");
} else if(a == -1 && !firstNumber){ // If they've entered -1 after inputting a valid number
System.out.println("The max number was " + maxNumber);
} else{ // They've entered a valid number.
if(firstNumber){ // If this is the first number, we set the max initially, and change this flag to false now.
maxNumber = a;
firstNumber = false;
} else{ // Not first number, so only check if the input is larger.
if(a > maxNumber){
maxNumber = a;
}
}
}
}