Программа по-прежнему выполняется, когда длина массива больше 5

вы не можете использовать generic типа this.list, это IInterface, но вы пытаетесь добавить Class1 в список. Это должно быть следующим:

        List<Base<Class1>> list = new List<Base<Class1>>();
        Class2<Class1> item = new Class2<Class1>();
        list.Add(item); 
0
задан Mark Bussard 13 July 2018 в 05:43
поделиться

3 ответа

В конечном итоге то, что @ Hydraxan14 подсвечено правильно. Даже при входе в 6-е значение он все равно вычислит среднее значение первых пяти целых чисел.

0
ответ дан Gaurav 17 August 2018 в 13:38
поделиться
  • 1
    Ответчик хочет, чтобы его программа выходила, если есть более пяти номеров, а не если их больше четырех. Ваша программа выйдет, если будет ровно пять чисел. – Hydraxan14 13 July 2018 в 15:20
  • 2
    @ Hydraxan14 Обновили ответ. – Gaurav 14 July 2018 в 09:25

Массив никогда не бывает больше 5, поэтому программа никогда не выйдет раньше, независимо от того, сколько номеров вводит пользователь.

Поскольку вы создаете массив емкостью 5 элементов (и потому, что ваш for цикл работает только 5 раз) ваш массив никогда не будет длиннее 5 элементов.

double[] numbers = new double[5];
//...
for (int i = 0; i < 5; ++i) {
    numbers[i] = input.nextDouble();
    //...
}
1
ответ дан Hydraxan14 17 August 2018 в 13:38
поделиться

Я оптимизировал ваш код. В приведенных ниже кодах вы также можете получить среднее значение суммы. 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;
    }

}
0
ответ дан ulvi_ 17 August 2018 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: