当前位置: 首页 > 知识库问答 >
问题:

如果我使用一个数字作为循环停止符,我如何确保我的程序不会将这个数字初始化为最大值或最小值?

柴阳云
2023-03-14

这是我的程序应该做的:这是一个带有循环的程序,允许用户输入一系列整数。用户应该输入-99来表示序列的结束。输入所有数字后,程序应该显示输入的最大和最小数字。

我的代码正在工作,但是就在它停止之前,它将max或min初始化为-99,而不是序列中的最后一个整数,然后结束。我能做些什么来阻止这一切?

代码如下:

public static void main(String[] args)
{
    //Create a Scanner object for keyboard input.
    Scanner keyboard = new Scanner(System.in);

    //create variables 
    int maxInt = -1000;         //number that will be the largest initialized very low
    int minInt = 1000;          //number that will be the smallest initialized very high
    int input = 0;              //to hold the user's integer entry

    //loop for the user to enter as many integers as they want
    while(input != -99)
    {
        //General Instructions and initialization of input
        System.out.println("Enter an integer. "
            + "When you are finished, please enter -99.");
        input = keyboard.nextInt();

        if(input > maxInt)
        {
            maxInt = input;
        }
        else if(input < minInt)
        {
            minInt = input;
        }
    }

    System.out.println("Your lowest number is: " + minInt);
    System.out.println("Your highest number is: " + maxInt);

    keyboard.close();
}

共有2个答案

程祯
2023-03-14

如果是您的哨兵控制值,则需要在为 -99 分配 maxInt 或 minInt 变量之前检查输入值。

例子

if ( input > maxInt && input != -99 )
{
    maxInt = input;
}
else if ( input < minInt && input != -99 )
{
    minInt = input;
}
郎星汉
2023-03-14

您的输入被分配到while循环中,因此循环开始时还没有-99。因此,使用-99运行循环,然后在结束时停止。

js prettyprint-override">while (input != -99) {
  System.out.println("Enter an integer. " + "When you are finished, please enter -99.");
  input = keyboard.nextInt());

  if (input == -99) {
    break;
  }
  if (input > maxInt) {
    maxInt = input;
  } else if (input < minInt) {
    minInt = input;
  }
}
 类似资料: