Я изучаю Java самостоятельно и только что закончил изучать основы массивов, или так я думаю. Я хочу создать класс класса, который хранит оценки каждого ученика и средний. У меня есть цикл for, который просит каждого из 10 учеников ввести 4 теста. Как только я получаю эти 4 класса, я беру среднее. Затем я храню оценки и среднее количество учащихся в массиве, по одному массиву на одного учащегося. Я по существу создаю 10 массивов с этими 5 элементами, для каждого ученика, использующего цикл for. Теперь я хочу взять 5-й элемент, средний из 4-х классов, из массива каждого ученика и заполнить другой массив, называемый средними, чтобы я мог выполнять другие вычисления. Возможно ли это с моей логикой? Я думаю, я мог бы жесткий код 10 массивов, 1 для каждого студента, как так:Использование элемента массива для заполнения другого массива - Java
double averages[] = {student1[4], student2[4], ..., student10[4]};
Разве это плохой способ пойти об этом, хотя? Любая конструктивная помощь или руководство будут оценены. Пожалуйста, не отправляйте код, который отдает ответ, так как я не буду учиться на этом. Я просто хочу намек в правильном направлении. :)
Вот мой код до точки смешения:
import java.util.Scanner;
public class ClassAverages {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double grade1 = 0.0, grade2 = 0.0, grade3 = 0.0, grade4 = 0.0, average = 0.0;
// get grades from each of the 10 students
for (int student = 1; student <= 3; student++) {
System.out.println("Student " + student);
System.out.println("---------\n");
System.out.print("Enter the first grade: ");
grade1 = keyboard.nextDouble();
while (grade1 < 0) { // input validation for grade 1
System.out.print("You entered a negative value for grade. Please re-enter a positive grade: ");
grade1 = keyboard.nextDouble();
}
System.out.print("Enter the second grade: ");
grade2 = keyboard.nextDouble();
while (grade2 < 0) { // input validation for grade 2
System.out.print("You entered a negative value for grade. Please re-enter a positive grade: ");
grade2 = keyboard.nextDouble();
}
System.out.print("Enter the third grade: ");
grade3 = keyboard.nextDouble();
while (grade3 < 0) { // input validation for grade 3
System.out.print("You entered a negative value for grade. Please re-enter a positive grade: ");
grade3 = keyboard.nextDouble();
}
System.out.print("Enter the fourth grade: ");
grade4 = keyboard.nextDouble();
System.out.println();
while (grade4 < 0) { // input validation for grade 4
System.out.print("You entered a negative value for grade. Please re-enter a positive grade: ");
grade4 = keyboard.nextDouble();
System.out.println();
}
// calculate the current student's average
average = (grade1 + grade2 + grade3 + grade4)/4;
// for each student, 1 to 10, create an array with their 4 grades and average
double studentX[] = { grade1, grade2, grade3, grade4, average };
System.out.println("SCORE 1\t\tSCORE 2\t\tSCORE 3\t\tSCORE 4\t\tAVERAGE");
System.out.print(studentX[0] + "\t\t");
System.out.print(studentX[1] + "\t\t");
System.out.print(studentX[2] + "\t\t");
System.out.print(studentX[3] + "\t\t");
System.out.print(studentX[4] + "\n");
System.out.println();
// I want to use each student's average for each corresponding element in the averages array
// create an array of all student's averages
// double averages[] = {student1average, student2average,...student10average} ???
}
}
}
ВЫВОД В настоящее время:
Student 1
---------
Enter the first grade: 100
Enter the second grade: 100
Enter the third grade: 100
Enter the fourth grade: 100
SCORE 1 SCORE 2 SCORE 3 SCORE 4 AVERAGE
100.0 100.0 100.0 100.0 100.0
Student 2
---------
Enter the first grade: 90
Enter the second grade: 90
Enter the third grade: 90
Enter the fourth grade: 80
SCORE 1 SCORE 2 SCORE 3 SCORE 4 AVERAGE
90.0 90.0 90.0 80.0 87.5
Student 3
---------
Enter the first grade: 100
Enter the second grade: 100
Enter the third grade: 90
Enter the fourth grade: 80
SCORE 1 SCORE 2 SCORE 3 SCORE 4 AVERAGE
100.0 100.0 90.0 80.0 92.5
Я согласен с классовой структурой является способом подойти к этому. Однако, поскольку он только что научился массивам, я не уверен, будет ли это в вопросе, который он задает. – KyleKW
в java 8 это может быть: 'int [] averageArray = Stream.of (studentArray) .map (student -> student.average) .toArray();' – maxpovver
Я согласен, что это может быть немного сложным, но у меня есть понял, что один из лучших способов научить compsci - столкнуться с некоторыми сложными концепциями и потратить много времени, пытаясь понять это. Вам нехорошо защищать себя от чего-то, что может быть трудно! Однако я полностью согласен с тем, что это может быть слишком сложно для кого-то начинающего. – Jay