(Java) 如何跟踪用户输入的数字以确定最小值和最大值

(Java) How to Keep Track of Numbers Entered by User for Determining Min and Max

我的家庭作业要求我使用输入对话框要求最终用户输入数字,将该字符串解析为 int,然后使用确认对话框询问用户是否要输入另一个号码。如果他们单击“是”,程序将循环,一旦他们单击“否”,它就会获取所有输入的数字并确定最小值和最大值。如何在不声明多个变量来保存它们的情况下跟踪所有输入的数字(因为用户在技术上可以输入无限数量的数字)?

我对编程还很陌生。我一直在搜索我的教科书,我浏览了 Stack Overflow 以找到我的具体问题但没有找到任何东西,至少在 Java.

    {
        int yes = JOptionPane.YES_OPTION;

        do
        {
            String numberstring = JOptionPane.showInputDialog("Enter a "
                    + "number: ");
            int number = Integer.parseInt(numberstring);

            yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
                    + " another number?", "MinMax", JOptionPane.YES_OPTION);
        }
        while (yes == JOptionPane.YES_OPTION);

        JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
                + " max is " + max);
    }

我并没有收到任何错误,我只是不知道如何保存来自用户的可能无限数量的条目,因为程序会循环直到用户单击 "no"。

创建最小和最大变量,并在每次用户输入新数字时更新它们:

int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
...
int number = Integer.parseInt(numberstring);
min = Math.min(number, min);
max = Math.max(number, max);

如果您真的想保留 所有 个数字,您可以创建一个列表并继续向其中添加输入的数字:

List<Integer> allNumbers = new LinkedList<>();
do {
    String numberstring = JOptionPane.showInputDialog("Enter a number: ");
    int number = Integer.parseInt(numberstring);
    allNumbers.add(number);
    yes = JOptionPane.showConfirmDialog
              (null, 
               "Do you want to enter another number?",
               "MinMax",
               JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);

但是,您应该注意这是一种非常低效的方法 - 您实际上并不需要所有数字,只需要最小值和最大值,您可以边计算边计算,并避免存储所有这些数字:

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;

do {
    String numberstring = JOptionPane.showInputDialog("Enter a number: ");
    int number = Integer.parseInt(numberstring);
    max = Math.max(max, number);
    min = Math.min(min, number);
    yes = JOptionPane.showConfirmDialog
              (null, 
               "Do you want to enter another number?",
               "MinMax",
               JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);

您可以按照以下方式进行:

{
    int yes = JOptionPane.YES_OPTION;
    List<Integer> list=new ArrayList<Integer>();

    do
    {
        String numberstring = JOptionPane.showInputDialog("Enter a "
                + "number: ");
        int number = Integer.parseInt(numberstring);

        list.add(number);

        yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
                + " another number?", "MinMax", JOptionPane.YES_OPTION);
    }
    while (yes == JOptionPane.YES_OPTION);

    int min = list.get(0), max = list.get(0);
    for (int i = 1; i < list.size(); i++) {
        if (min > list.get(i))
            min = list.get(i);
        if (max < list.get(i))
            max = list.get(i);
    }

    JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
            + " max is " + max);
}