/ / Population a 2D Array Java - java, arrays, for-loop, multidimensional-array

Populácia 2D poľa Java - java, polia, for-loop, multidimensional-array

Potrebujem vytvoriť 2D pole, ktoré dokáže čítať vID študenta s 50 študentmi a každá z ich 7 známok predmetu. Vymyslel som spôsob ukladania známok predmetu, ale nie som si istý, ako uložiť ID študenta. Tu je zatiaľ kód.

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;
}
}
}

odpovede:

1 pre odpoveď č. 1

Máte iba jedno pole jedného primitívneho typu, ale máte dve informácie.

Dve jednoduché možnosti sú

1) Na uloženie ID použite iné pole

2) (Lepšie riešenie IMO) Vytvorte si vlastné Student triedy a definovať pole Student[] (Študent by mal obsahovať pole pre pole značiek)


1 pre odpoveď č. 2

Na uloženie ID študenta môžete použiť pole [n] [0].

Toto by malo fungovať:

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();
}

poznámky:

  • Ak nemôžete upraviť pôvodné pole alebo potrebujete napríklad uložiť meno študentov, môžete vytvoriť nové pole na ukladanie ID študentov.

    String[] studentsId = new String[50];
    int[] studentsId = new int[50];
    
  • pri jeho použití nezabudnite zavrieť zdroje: fromKeyboard.close();


0 pre odpoveď č. 3

Keď som vašu otázku pochopil správne:

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 pre odpoveď č. 4

Ste na správnej ceste.

Nečítate študentský vstup. Musíte si to teda prečítať a umiestniť do prvej bunky pred vnútornou slučkou. Potom dajte všetky značky na ten istý riadok pozdĺž bočnej strany. To závisí od typu ID študenta, je to reťazec alebo číslo?

Prečo tiež mať v stĺpci 7 stĺpcov a pre známky z predmetov iba dvakrát opakovať? Je tu viac čo robiť. Ak sa nevyhnete nevyužitiu miesta.