显示正确的最大和最小数字的问题

Issue in displaying correct largest and smallest numbers

我是编程的新手,我正在尝试创建一个程序,允许我输入几个整数和一个单独的整数退出,退出时将 return 包含最大和最小的数字.一切正常,除了显示最大和最小数字时它只显示退出整数,在本例中为 -99。这是我的代码,任何帮助都会很棒。

import java.util.Scanner;


public class LargestSmallest
{
public static void main(String [] args)
{
    //identifier declarations
    int number;
    int numberend = -99;
    int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;


    //create a Scanner object to read from the keyboard & input
    Scanner keyboard = new Scanner(System.in);
    Scanner input = new Scanner(System.in);

    //display prompts and get input
    System.out.println("Enter an integer, or -99 to quit:");
    number = keyboard.nextInt();
    if (number == -99){ 
    System.out.println("You did not enter any numbers.");
    }else{
    //loop
    while ((number = input.nextInt()) != -99) {
        System.out.println("Enter an integer, or -99 to quit:");

    } 
    }
    //largest & smallest
    {
    if (number > largest)
    largest = number;
    if (number < smallest)
    smallest = number;
    System.out.println("Largest:" + largest);
    System.out.println("Smallest:" + smallest);
    }
}
}

您的代码在输入时未跟踪当前最大和最小数字。请参阅以下修改:-

    public static void main(String[] args) {
    //identifier declarations
    int number;
    int numberend = -99;
    int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;

    //create a Scanner object to read from input
    Scanner input = new Scanner(System.in);

    //display prompts and get input
    System.out.println("Enter an integer, or -99 to quit:");
    while ((number = input.nextInt()) != numberend) {

        System.out.println("Enter an integer, or -99 to quit:");

        if (number > largest) {
            largest = number;
        }
        if (number < smallest) {
            smallest = number;
        }

    }

    //largest & smallest
    System.out.println("Largest:" + largest);
    System.out.println("Smallest:" + smallest);

}

在循环中,您只将最后输入的数字保存在 number 中。要退出循环,您必须输入 -99,这也使它成为您保存的唯一数字。因此,在您的代码中,number 将始终为 -99。 -99 既大于 largest (INTEGER.MIN_VALUE) 又小于 smallest (INTEGER.MAX_VALUE),所以这就是打印 -99 的原因。

解决这个问题,可以用两个变量来保存当前最大和当前最小的数。

您也可以使用列表来解决这个问题。将循环中的所有输入保存在某种列表中,例如 ArrayList。然后,当用户输入 -99 时,您必须检查列表以找到最大和最小的数字。这不是最佳解决方案,但可以帮助您了解正在发生的事情。