【问题标题】:calculate minimum value from user input while excluding loop termination number (-1)从用户输入计算最小值,同时排除循环终止数(-1)
【发布时间】:2016-07-17 21:16:30
【问题描述】:

嘿,我正在尝试从用户输入中计算出最小值和最大值,同时忽略循环终止值,即 -1。我了解如何做所有事情,除了在计算输入的最小值时如何忽略 -1。 这是我目前得到的代码:

    int value = 0;
    int max = value;
    int min = max;

    Scanner scan = new Scanner(System.in);

    while (value != -1) {
        System.out.print("Value: ");
        value = scan.nextInt();
        if (min > value) {
        min = value;     }

       if (max < value) {
           max = value; }
    }

    System.out.println("Min = " + min);
    System.out.println("Min = " + min);

如何在忽略 -1 的情况下计算最小值?

谢谢。

【问题讨论】:

    标签: java


    【解决方案1】:

    在以if (min &gt; value) 开头的行之前添加if (value == -1) break;。一旦读取了终端 (-1) 字符,这将导致循环中断。

    为清楚起见,您可以将循环条件更改为while(true)。对于这种情况,这是一个很常见的习语。

    【讨论】:

      【解决方案2】:

      你把循环变成一个永无止境的循环,并在检测到终止号时添加break

      Scanner scan = new Scanner(System.in);
      
      int max = Integer.MIN_VALUE;
      int min = Integer.MAX_VALUE;
      for (;;) { // never-ending loop
          System.out.print("Value: ");
          if (! scan.hasNextInt()) {
              System.out.println("** Invalid input **");
              scan.nextLine(); // discard invalid input
              continue; // loop back to prompt again
          }
          int value = scan.nextInt();
          if (value == -1) // termination number
              break;
          if (value < min)
              min = value;
          else if (value > max)
              max = value;
      }
      System.out.println("Min = " + min);
      System.out.println("Max = " + max);
      

      也已修复:

      • minmax 的初始化(否则 min 可能永远是 0
      • 验证Scanner 输入(因此程序不会因输入错误而出现异常)
      • 打印max(打印了两次min
      • 缩进(因此代码结构对人类读者清晰可见)

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2020-06-08
      • 2016-03-03
      相关资源
      最近更新 更多