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

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

蒯胜泫
2023-03-14

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

我对编程很陌生。我一直在搜索我的教科书,我浏览了堆栈溢出来找到我的具体问题,但没有发现任何东西,至少在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);
    }

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

共有3个答案

孟振
2023-03-14

如果确实要保留所有数字,可以创建一个列表,并不断向其中添加输入的数字:

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);
解修然
2023-03-14

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

int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
...
int number = Integer.parseInt(numberstring);
min = Math.min(number, min);
max = Math.max(number, max);
范鸿
2023-03-14

您可以按以下方式执行

{
    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);
}
 类似资料:
  • 解决了 我想问用户他想输入多少个整数,然后读取所有数字,同时跟踪他们输入的最大和最小数字。然后打印最大和最小数字。 我正在考虑将最大值和最小值设置为第一个输入的数字,然后在for循环中读取下一个数字,并使用更大/更小的数字更改最大值和最低值。但是,它只打印用户输入的第一个数字。有人能帮我吗?非常感谢。 代码:

  • 我正在写一个方法,它接受用户的整数输入,并显示总数、平均值、最大值和最小值。 我有总数和平均工作,但我得到2147483647最大和-2147483648最小。 循环只能在用户输入-1时结束。 我的代码:

  • 我的代码要求用户输入动物物种的值,然后将其显示给他们。我只需要最后添加一个部分,它也会告诉用户最濒危的动物(输入的数字最低)。我已经环顾了一些地方,并使用x进行了triec

  • 以下是任务的具体要求: “首先,启动NetBeans并关闭之前可能打开的所有项目(在顶部菜单“转到文件”)== 然后创建一个名为“MinMax”(不带引号)的新Java应用程序,该应用程序声明一个长度为5的双精度数组,并使用方法使用来自命令行的用户输入填充数组,并打印出数组中的max(最高)和min(最低)值。确定最大值和最小值的方法可能不使用Java中的任何内置排序方法。也就是说,您需要在这些方

  • 问题内容: 我正在上课的作业,正在寻找一些有用的指示,而不是完整的解决方案。基本上,我必须编写一个Java程序,该程序读取一个文本文件并逐行列出信息,列出行号,最后打印出最大值和最小值以及与每个值相关的年份。文本文件包含一年和该年的温度。因此,它列出了类似“ 1900 50.9”的内容。我不是要使用数组或扫描仪,这是分配的一部分。我已经能够成功地使程序逐行打印并逐行打印出相应的温度。有人告诉我,我

  • 使用while循环,我必须执行以下操作: 使用变量“I”,计算输入的整数数量;使用变量“number”,表示输入的数字;使用变量“min”,表示迄今为止输入的最小数字;使用变量“max”,表示迄今为止输入的最大数字 用户将总共输入5个整数。 这是我的代码: 当我运行这个时,“I”、“number”和“maximum”变量似乎都能正常工作。但是,“minimum”变量要记住,“minimum”的设置