Ich lerne Java selbst und habe gerade die Grundlagen von Arrays gelernt, denke ich. Ich möchte ein Notenblatt erstellen, das die Noten und den Durchschnittswert jedes Schülers enthält. Ich habe eine For-Schleife, die jeden der 10 Schüler auffordert, ihre 4 Prüfungsnoten einzugeben. Sobald ich diese 4 Noten bekomme, nehme ich den Durchschnitt. Ich speichere dann die Noten und den Durchschnitt des Schülers in ein Array, ein Array pro Schüler. Ich erstelle im Grunde 10 Arrays mit diesen 5 Elementen für jeden Schüler, der die for-Schleife benutzt. Ich möchte nun das fünfte Element, den Durchschnitt der vier Grade, aus dem Array jedes Schülers nehmen und ein weiteres Array namens Durchschnitt füllen, damit ich andere Berechnungen durchführen kann. Ist das mit meiner Logik möglich? Ich glaube, ich könnte hart Code 10-Arrays, 1 für jeden Schüler in etwa so:Verwenden eines Array-Elements zum Auffüllen eines anderen Arrays - Java
double averages[] = {student1[4], student2[4], ..., student10[4]};
Ist das nicht eine schlechte Art und Weise über diese allerdings zu gehen? Jede konstruktive Hilfe oder Anleitung wäre willkommen. Bitte schreiben Sie keinen Code, der die Antwort preisgibt, da ich davon nicht lernen werde. Ich möchte nur einen Hinweis in die richtige Richtung. :)
Hier ist mein Code bis zum Punkt der Verwirrung:
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} ???
}
}
}
OUTPUT Ab sofort:
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
Ich stimme mit Klassenstruktur ist die Art und Weise sich diesem zu nähern. Da er aber gerade Arrays gelernt hat, bin ich mir nicht sicher, ob das in der Fragestellung liegen würde, die er stellt. – KyleKW
in Java 8 kann es sein: 'int [] AverageArray = Stream.of (StudentArray) .Map (Student -> Student.Average) .toArray();' – maxpovver
Ich stimme zu, dass dies ein bisschen komplex sein könnte, aber ich habe erkannte, dass einer der besten Wege, um Compcsi zu unterrichten, einige schwierige Konzepte zu begegnen und viel Zeit damit verbringen, es herauszufinden. Es tut dir nicht gut, dich vor etwas zu schützen, das schwierig sein könnte! Ich stimme jedoch völlig zu, dass dies für jemanden, der anfängt, etwas zu komplex sein könnte. – Jay