#java #arrays #multidimensional-array #average #increment
#java #массивы #многомерный массив #среднее #увеличение
Вопрос:
У меня есть 2D-массив из 4 тестов, по 5 баллов за штуку. Мне нужно распечатать среднее значение, к какому тестовому номеру оно относится. Мне также нужно, чтобы номера тестов были 1-4 вместо 0-3.
Я не уверен, как перенумеровать тесты и заставить их печатать читаемый номер:
int[][] testScores = {
{100, 85, 91, 75, 82},
{81, 75, 68, 92, 87},
{99, 71, 75, 84, 91},
{97, 91, 68, 72, 83}};
for (int i = 0; i < testScores.length; i ) {
int sum = 0;
for (int j = 0; j < testScores[i].length; j ) {
sum = testScores[i][j];
}
System.out.println("Average of Test#" testScores[i]
"is " sum / testScores[i].length);
System.out.println();
}
Мой конечный результат должен быть чем-то вроде:
Тест # I имеет среднее значение J, где I начинается с 1 и переходит в 4.
Скорее всего, мне потребуется добавить дополнительные тесты позже по мере разработки, но я уверен, что смогу справиться с этим, как только смогу отсортировать это. Заранее ценю помощь!
Комментарии:
1. Просто замените
testScores[i]
наi
2. Это здорово! Но теперь мне нужно, чтобы оно было 1-4 вместо 0-3. Как я могу этого добиться? Спасибо за вашу помощь.
3. Кажется, я понял. Я мог бы просто добавить это: int testNumber = i 1; System.out.println(«Среднее значение теста #» testNumber «is » sum / TestScores[i].длина); System.out.println();
Ответ №1:
Вы можете выполнить итерацию по range
индексам строк этого массива и для каждой строки объединить в один entry
увеличенный индекс строки и ее average
значение. Ваш код может выглядеть примерно так:
int[][] testScores = {
{100, 85, 91, 75, 82},
{81, 75, 68, 92, 87},
{99, 71, 75, 84, 91},
{97, 91, 68, 72, 83}};
IntStream.range(0, testScores.length)
// Stream<Map.Entry<Integer,Double>>
.mapToObj(i -> Map.entry(
// number of the line of scores
i 1,
// average value for this line
Arrays.stream(testScores[i])
.average().orElse(0)))
// output
.forEach(System.out::println);
1=86.6
2=80.6
3=84.0
4=82.2
Ответ №2:
Согласно комментарию Ника, testScores[i]
необходимо изменить на i
и увеличить testScores
соответственно на номер теста, что должно быть сделано таким образом:
int testNumber = i 1;
System.out.println("Average of Test#" testNumber
" is " sum / testScores[i].length);
System.out.println();