数组长度大于5时程序仍然执行

时间:2018-07-13 05:43:17

标签: java arrays if-statement

我正在为班级分配一小部分额外的学分。基本上,用户输入5个数字,然后给出平均值。我有一个if语句来检查数组长度是否大于5,如果是,则关闭程序。

但是,该程序似乎以前五个给定的数字执行而不是停止。我不确定自己在忽略什么

public static double[] getNumbers() {
    Scanner input = new Scanner(System.in);
    double[] numbers = new double[5];
    System.out.print("Enter integers: ");
    for (int i = 0; i < 5; ++i) {

        numbers[i] = input.nextDouble();

        if (numbers[i] == 999) {
            System.exit(0);

        }
    }
    return numbers;
}

public static double[] getAverage(double[] numbers) {

    double[] total = new double[1];
    double[] average = new double[1];

    for (int i = 0; i < 5; ++i) {
        total[0] = total[0] + numbers[i];

    }

    average[0] = total[0] / numbers.length;
    return average;

}

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    double[] numbers;
    double average = 0;

    while (true) {
        System.out.println("Enter 5 integers, for example: 10 20 50 84 73");
        numbers = getNumbers();
        if (numbers.length > 5) {
            System.exit(0);
        }
        average = numbers[0];
        System.out.println("Average is: " + average);

    }
}

}

3 个答案:

答案 0 :(得分:1)

该数组永远不会大于5,因此无论用户键入多少数字,该程序都不会提前退出。

由于创建的数组的容量为5个元素(并且for循环仅运行5次),因此数组的长度永远不会超过5个元素。

double[] numbers = new double[5];
//...
for (int i = 0; i < 5; ++i) {
    numbers[i] = input.nextDouble();
    //...
}

答案 1 :(得分:0)

最终 @ Hydraxan14 正确的是。即使输入第6个值,它仍将计算前五个整数的平均值。

答案 2 :(得分:0)

我已经优化了您的代码。在下面的代码上,您还可以获取总和的平均值。 getNumbers()获取输入并返回数组numbers,并在numbers[]方法上分配main数组。那么您可以检查numbers[]数组的长度,如果长度超过5,则System.exit(0)else会打印平均值

import java.util.Scanner;

public class GuessAvagereNumber {
    public static void main(String[] args) {
        System.out.println("Enter 5 integers, for example: 10 20 50 84 73");
        double[] numbers = getNumbers();

        if(numbers.length>5){
            System.exit(0);
        } else {
            System.out.println("Average is: " + getAverage(numbers));
        }          
    }
    private static double[] getNumbers() {
        Scanner input = new Scanner(System.in);
        double[] numbers = new double[5];
        System.out.print("Enter integers: ");
        for (int i = 0; i < 5; ++i) {
            numbers[i] = input.nextDouble();
            if (numbers[i] == 999) {
                System.exit(0);
            }
        }
        return numbers;
    }

    private static double getAverage(double[] numbers) {
        double doubleKeeper = 0;
        for (int i = 0; i < numbers.length; ++i) {
            doubleKeeper+=numbers[i];
        }
        return doubleKeeper/numbers.length;
    }

}