/ / Изпълнение на 2D масив Java - java, масиви, for-loop, многоизмерен масив

Нареждане на 2D масив Java - Java, масиви, за-цикъл, многомерни масиви

Трябва да създам 2d масив, който може да чете встудентско удостоверение от 50 ученици и всяка от техните 7 предметни марки. Измислих начин да съхранявам предметните марки, но не съм сигурен как да съхранявам идентификационния номер на ученика. Ето кода засега.

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

Отговори:

1 за отговор № 1

Имате само един масив от един примитивен тип, но имате две части информация.

Две прости опции са

1) Използвайте друг масив, за да съхранявате идентификаторите

2) (По-добро решение IMO) Създайте свой собствен Student клас и дефинираме масив Student[] (Студентът трябва да съдържа поле за масив от оценки)


1 за отговор № 2

Можете да използвате масив [n] [0] за съхраняване на идентификатор на ученик.

Това трябва да работи:

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

ЗАБЕЛЕЖКИ:

  • Ако не можете да промените оригиналния масив или трябва да запазите името на учениците, например, можете да създадете нов масив, който да съхранява идентификаторите на студенти като.

    String[] studentsId = new String[50];
    int[] studentsId = new int[50];
    
  • не забравяйте да затворите ресурси, когато го използвате: fromKeyboard.close();


0 за отговор № 3

Когато разбрах правилно въпроса ви:

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 за отговор № 4

Вие сте на прав път.

Вие не четете въвеждането на StudentNo. Затова трябва да прочетете това и да го поставите в първата клетка преди вътрешния цикъл. След това поставете всички марки на един и същи ред, покрай него. Това зависи от вида на идентификационния номер на ученика, това е низ или число?

Също така, защо има 7 колони в масива и само цикъл два пъти за предметните степени? Тук има ли какво повече да се направи. Ако не, избягвайте използването на пространството.