【问题标题】:(Java) How to Keep Track of Numbers Entered by User for Determining Min and Max(Java) 如何跟踪用户输入的数字以确定最小值和最大值
【发布时间】:2020-02-10 11:04:41
【问题描述】:

我有一个家庭作业要求我使用输入对话框要求最终用户输入一个数字,将该字符串解析为一个 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);
    }

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

【问题讨论】:

  • 您可以使用 ArrayList 并在每个循环中添加 number 变量。

标签: java loops max min joptionpane


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    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);
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      {
          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);
      }
      

      【讨论】:

      • 谢谢!这行得通!虽然,我不确定究竟是为什么。能否请您解释一下,以便我了解这是如何工作的?
      猜你喜欢
      • 2021-06-01
      • 2018-03-03
      • 1970-01-01
      • 2012-10-22
      • 2012-07-19
      • 2015-12-30
      • 2020-02-28
      • 1970-01-01
      • 2018-07-08
      相关资源
      最近更新 更多