Muszę utworzyć tablicę 2d, która może czytać wlegitymacje studenckie 50 studentów i każdy z ich 7 znaków przedmiotowych. Wymyśliłem sposób na przechowywanie znaków przedmiotowych, ale nie jestem pewien, jak przechowywać ID uczniów. Oto kod do tej pory.
public static void main(String[] args)
{
double mark;
double[][] studs = new double[50][7];
Scanner fromKeyboard = new Scanner(System.in);
for (int studentNo = 0; studentNo < 3; studentNo++) {
System.out.println("enter student ID number for student " + studentNo);
for (int moduleNo = 0; moduleNo < 2; moduleNo++) {
System.out.println("Enter users mark for module " + moduleNo);
mark = fromKeyboard.nextDouble();
studs[studentNo][moduleNo] = mark;
}
}
}
Odpowiedzi:
1 dla odpowiedzi № 1Masz tylko jedną tablicę jednego prymitywnego typu, ale masz dwie informacje.
Dwie proste opcje to
1) Użyj innej tablicy do przechowywania identyfikatorów
2) (Lepsze rozwiązanie IMO) Utwórz własne Student
klasy i zdefiniuj tablicę Student[]
(Uczeń powinien zawierać pole na tablicę ocen)
1 dla odpowiedzi nr 2
Możesz użyć tablicy [n] [0] do przechowywania identyfikatora studenta.
To powinno działać:
public static void main(String[] args)
{
double mark = 0d;
int id = 0;
double[][] studs = new double[50][8];
Scanner fromKeyboard = new Scanner(System.in);
for (int studentNo = 0; studentNo < 50; studentNo++) {
System.out.print("enter student ID number for student " + (studentNo + 1) + ":");
id = fromKeyboard.nextInt();
studs[studentNo][0] = id;
for (int moduleNo = 1; moduleNo < 8; moduleNo++) {
System.out.print("Enter mark of student " + id + " for module " + moduleNo);
mark = fromKeyboard.nextDouble();
studs[studentNo][moduleNo] = mark;
}
}
fromKeyboard.close();
}
UWAGI:
Jeśli nie możesz zmodyfikować oryginalnej tablicy lub musisz na przykład zapisać nazwisko studenta, możesz utworzyć nową tablicę do przechowywania identyfikatorów studentów.
String[] studentsId = new String[50]; int[] studentsId = new int[50];
pamiętaj, aby zamknąć zasoby podczas korzystania z niego:
fromKeyboard.close();
0 dla odpowiedzi № 3
Kiedy zrozumiałem twoje pytanie poprawnie:
public static void main(String[] args)
{
double[][] studs = new double[50][8];
Scanner fromKeyboard = new Scanner(System.in);
for (int studentNo = 0; studentNo < 50; studentNo++) {
System.out.println("enter student ID number for student " + studentNo);
studs[studentNo][0] = fromKeyboard.nextDouble(); //save id
for (int moduleNo = 1; moduleNo < 8; moduleNo++) {
System.out.println("Enter users mark for module " + moduleNo);
studs[studentNo][moduleNo] = fromKeyboard.nextDouble(); // your 7 marks
}
}
}
0 dla odpowiedzi nr 4
Jesteś na dobrej drodze.
Nie czytasz ucznia Brak danych wejściowych. Musisz to przeczytać i umieścić w pierwszej komórce przed wewnętrzną pętlą. Następnie umieść wszystkie znaki w tym samym rzędzie obok niego. Zależy to od rodzaju legitymacji studenckiej, czy jest to ciąg znaków, czy liczba?
Ponadto, dlaczego ma 7 kolumn w tablicy i zapętla się tylko dwa razy dla ocen przedmiotów? Czy jest tu coś więcej do zrobienia. Jeśli nie, unikaj zajmowania miejsca.