Трябва да създам 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 колони в масива и само цикъл два пъти за предметните степени? Тук има ли какво повече да се направи. Ако не, избягвайте използването на пространството.