为什么不考虑输入的第一个值?

时间:2020-03-27 14:48:49

标签: java if-statement while-loop

如果输入的第一个数字是所有输入数字的最大值或最小值,则程序不会将该值用作最小值或最大值。我在做什么错了?

$install = Start-Process -FilePath 'path' -ArgumentList '/qn' -Wait -PassThru
if ($install.ExitCode -eq 0) {
    Write-Host "Install Successful"
} else {
    Write-Host "Install Failed"
}

}

3 个答案:

答案 0 :(得分:0)

我可以看到2个错误

  1. 您没有在比较最小和最大,也许最小大于最大,请记住您已经得到了前两个输入。
  2. 您使用nextDouble进行签入,但使用getInt作为整数。

答案 1 :(得分:0)

您要在扫描仪中查询“ hasNextDouble”,然后尝试提取一个将始终抛出的int(nextInt)。 这是一个快速的解决方案(仍然没有对前两个输入进行任何验证...)

Scanner in = new Scanner(System.in);
System.out.println("Please enter a set of integers: ");
System.out.println("When done entering, enter a non integer (e.g. a floating-point number or string).");


int smallest = in.nextInt();
int largest = in.nextInt();
if (smallest > largest) {
    int tmp = smallest;
    smallest = largest;
    largest = tmp;
}

while (in.hasNext()) {
    if (in.hasNextInt()) {
        int input = in.nextInt();
        if (input > largest) {
            largest = input;
        } else if (input < smallest) {
            smallest = input;
        }
    }
    if (in.hasNextDouble()) {
        break;
    }
}

System.out.println("Maximum: " + largest);
System.out.println("Minimum: " + smallest);
in.close();

答案 2 :(得分:0)

我对您的代码做了一些优化。您正在检查nextDouble,但是如果循环的评估结果为true,则循环继续进行,程序停止的原因是因为引发了异常。除了在您的系统中,您还说它也可以是字符串。您还决定,第一个输入将是最小的,第二个输入将是最大的。这可能会导致一些有趣的问题(如果我依次输入10、1、5.5,它将告诉我最小的是10,最大的是1)。我编写的代码仍然无法输入整数,但是您没有指定这种情况的预期行为。

Scanner in = new Scanner(System.in);
        System.out.println("Please enter a set of integers: ");
        System.out.println("When done entering, enter a non integer (e.g. a floating-point number or string).");

        int smallest = Integer.MAX_VALUE;
        int largest = Integer.MIN_VALUE;

        while (in.hasNextInt()) {
            int input = in.nextInt();
            if (input > largest) {
                largest = input;
            }
            if (input < smallest) {
                smallest = input;
            } 
        }

        System.out.println("Maximum: " + largest);
        System.out.println("Minimum: " + smallest);
        in.close();
相关问题