我要解决代码查询:
创建一个使用多维数组存储学生成绩的程序。第一个维度应该是每个学生的数字,第二个维度应该是每个学生的成绩。显示每个学生所获得的所有年级的平均水平以及每个学生所获得的总体平均水平。
下面是我的代码:
我为2个学生创建了3个年级。
int [] [] students_grades = new int[2][3];
students_grades[0][0] = 13;
students_grades[0][1] = 23;
students_grades[0][2] = 34;
students_grades[1][0] = 31;
students_grades[1][1] = 32;
students_grades[1][2] = 43;
int rows = 2;
int columns = 3;
int i, j;
for (i = 0; i < columns; i++) {
for ( j = 0; j < rows; j++) {
List<Integer> myList = new ArrayList<Integer>();
myList.add(students_grades[j][i]);
if (myList.size()==3) {
System.out.println("************************************************");
System.out.println("This is the grades for Students 1: "); System.out.println("-------------------------------------------------");
for (int element : myList) {
System.out.println(element);
}
}
}
System.out.println(" ");
}
但是我没有在if括号中得到for循环语句的输出。
答案 0 :(得分:1)
如果只想打印第一个学生的成绩,请尝试以下方法:
int [] [] students_grades = new int[2][3];
students_grades[0][0] = 13;
students_grades[0][1] = 23;
students_grades[0][2] = 34;
students_grades[1][0] = 31;
students_grades[1][1] = 32;
students_grades[1][2] = 43;
int rows = 2;
int columns = 3;
int i, j;
List<Integer> myList = new ArrayList<Integer>();
for (i = 0; i < rows; i++) {
for ( j = 0; j < columns; j++) {
myList.add(students_grades[i][j]);
if (myList.size() == 3) {
System.out.println("************************************************");
System.out.println("This is the grades for Students 1: "); System.out.println("-------------------------------------------------");
for (int element : myList) {
System.out.println(element);
}
}
}
System.out.println(" ");
}
}
答案 1 :(得分:-1)
myList是在内部循环中定义的,这意味着循环中的每次迭代都将创建一个新列表,因此列表长度永远不会为3。
要解决此问题,您需要在外部循环中为myList分配一个新的ArrayList,如下所示:
for (j = 0; j < rows; j++) {
List<Integer> myList = new ArrayList<Integer>();
for ( i = 0; i < columns; i++) {
myList.add(students_grades[j][i]);
if (myList.size()==3) {
System.out.println("************************************************");
System.out.println("This is the grades for Students 1: "); System.out.println("-------------------------------------------------");
for (int element : myList) {
System.out.println(element);
}
}
}
编辑: 由于行设置为2,因此if条件将永远不会满足。交换for语句将满足if条件。