如何打印循环中遇到的最大数字?

时间:2014-11-10 16:17:19

标签: java

我正在提示用户输入一系列数字,并希望跟踪输入的最大数字并在最后打印出来。例如:

请输入一个数字(输入-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;
    }
}

1 个答案:

答案 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;
         }
      }
   }
}