вы не можете использовать generic типа this.list, это IInterface, но вы пытаетесь добавить Class1 в список. Это должно быть следующим:
List<Base<Class1>> list = new List<Base<Class1>>();
Class2<Class1> item = new Class2<Class1>();
list.Add(item);
В конечном итоге то, что @ Hydraxan14 подсвечено правильно. Даже при входе в 6-е значение он все равно вычислит среднее значение первых пяти целых чисел.
Массив никогда не бывает больше 5, поэтому программа никогда не выйдет раньше, независимо от того, сколько номеров вводит пользователь.
Поскольку вы создаете массив емкостью 5 элементов (и потому, что ваш for
цикл работает только 5 раз) ваш массив никогда не будет длиннее 5 элементов.
double[] numbers = new double[5];
//...
for (int i = 0; i < 5; ++i) {
numbers[i] = input.nextDouble();
//...
}
Я оптимизировал ваш код. В приведенных ниже кодах вы также можете получить среднее значение суммы. 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;
}
}