为什么我的代码没有打印我需要的东西?

Why is my code not printing what I need it to?

提问人:TRE 提问时间:11/17/2023 更新时间:11/17/2023 访问量:42

问:

任务是找到中位数,如果输入超过 10 个整数,则需要打印:“忽略超过 10 个的数据项”但它没有这样做,我的代码阻止它打印有什么问题?

我的代码:

import java.util.Scanner;

public class Median {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
        final int MAX_INPUTS = 10;
        int[] numbers = new int[MAX_INPUTS];
        int count = 0;
        int input;
// Read input until a negative number is encountered or the maximum number of inputs is reached
        while (count < MAX_INPUTS) {
       input = scnr.nextInt();

            if (input < 0) {
                break;
            }

            // Check if count exceeds the maximum allowed inputs before recording the number
            numbers[count] = input;
            count++;
        }

        // Check if no data entered
        if (count == 0) {
            System.out.println("No data entered.");
            return;
        }

        // Calculate the median
        double median;

        if (count % 2 == 0) {
            int middle1 = numbers[count / 2 - 1];
            int middle2 = numbers[count / 2];
            median = (double) (middle1 + middle2) / 2;
        } else {
            median = numbers[count / 2];
        }

       ** // Display the result
        if (count > MAX_INPUTS) {
            System.out.println("Data items past number 10 ignored");
        }
        System.out.println("Median: " + median);**
    }
}

**输入: 1 2 3 4 5 60 70 80 90 100 110 120 130 -100

您的输出: 中位数: 32.5

预期输出: 忽略超过 10 个的数据项 中位数:32.5**

我不知道为什么它不会打印“忽略超过数字 10 的数据项”?

Java 数组

评论

0赞 tkausl 11/17/2023
你的循环只(尝试)读取最多 10 个数字,那么怎么可能是真的呢?if (count > MAX_INPUTS) {
0赞 Jorn 11/17/2023
使用 IDE 附带的调试器可以很容易地发现此类问题。在行上放一个断点,看看 的值是多少。if (count > MAX_INPUTS)count

答:

0赞 Lucas 11/17/2023 #1

因为您没有给扫描仪超过最大输入的机会。 如果你想让它过去,你需要把你的 if 语句放在 while 循环中。

while (input > 0 && count > MAX_INPUTS)