我正在自学Java,刚刚完成了数组的基础知识学习,或者我认为。我想创建一个能够保证每个学生的成绩和平均成绩的班级成绩单。我有一个for循环,要求10名学生中的每一个都要输入4个测试成绩。一旦我拿到这四个等级,我就取平均分。然后,我将学生的成绩和平均数存入一个数组中,每个学生一个数组。我基本上用这5个元素创建了10个数组,每个学生使用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
in java 8它可以是: 'int [] averageArray = Stream.of(studentArray).map(student - > student.average).toArray();' – maxpovver
我同意这可能有点复杂,但我有意识到教compsci最好的方法之一是遇到一些困难的概念,并花费大量的时间来解决它。你不好意思将自己从可能困难的事情中解脱出来!不过,我完全同意这对于某人出发可能有些复杂。 – Jay