从用户输入计算最小值,同时排除循环终止数(-1)

时间:2016-03-30 03:33:59

标签: java

嘿我试图计算用户输入的最小值和最大值,同时忽略循环终止值,即-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的情况下计算最小值?

感谢。

2 个答案:

答案 0 :(得分:1)

您将循环转为永无止境的循环,并在检测到终止号时添加01_makemigrations: command: "source /opt/python/run/venv/bin/activate && python ebagu/manage.py makemigrations --noinput" leader_only: true

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); min的初始化(否则max可能始终为min
  • 验证0输入(因此程序在输入错误时不会因异常而死)
  • 打印Scanner(打印max两次)
  • 缩进(因此代码结构对人类读者来说清晰可见)

答案 1 :(得分:0)

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

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