尝试以列主要形式填充二维数组时线程主错误中出现异常 java
Exception in thread main error when trying to fill in a 2D array in column major form java
代码:
import java.util.*;
public class lab3 {
public static void getScores(int[][] matrix) {
Scanner kb = new Scanner(System.in);
int r, c;
for (c = 0; c < matrix[0].length; c++){
for (r = 0; r < matrix.length; r++)
System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
matrix[r][c] = kb.nextInt();
}
kb.close();
}
public static void printArray(int[][] matrix) {
for (int c = 0; c < matrix[0].length; c++)
for (int r = 0; r < matrix.length; r++){
System.out.printf("%5d", matrix[r][c]);
System.out.println();
}
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.println("how many students are there?");
int students=kb.nextInt();
System.out.println("How many tests are there?");
int tests=kb.nextInt();
int [][] grades= new int [students][tests+1];
getScores(grades);
printArray(grades);
我觉得我很接近,但我总是收到错误。在列主要形式中填充数组是主要处理所以 "get scores" 方法和底部声明的数组是我认为我的问题所在请帮助我
在您的 getScores
方法中,内部 for 循环第一个 r
作为计数器缺少大括号,正确的代码应该是正确的,如果我正确地理解了您想要做的事情,
for (r = 0; r < matrix.length; r++) {
System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
matrix[r][c] = kb.nextInt();
}
此外,我的理解是在这行代码中它应该只是 tests
而不是 tests + 1
int [][] grades= new int [students][tests+1];
而且,大多数情况下,当您指定在哪一行收到什么异常时,最好回答您的查询,因此 SO 中的用户不必实际执行您的代码来查看您面临的问题。
希望对您有所帮助!!
代码:
import java.util.*;
public class lab3 {
public static void getScores(int[][] matrix) {
Scanner kb = new Scanner(System.in);
int r, c;
for (c = 0; c < matrix[0].length; c++){
for (r = 0; r < matrix.length; r++)
System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
matrix[r][c] = kb.nextInt();
}
kb.close();
}
public static void printArray(int[][] matrix) {
for (int c = 0; c < matrix[0].length; c++)
for (int r = 0; r < matrix.length; r++){
System.out.printf("%5d", matrix[r][c]);
System.out.println();
}
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.println("how many students are there?");
int students=kb.nextInt();
System.out.println("How many tests are there?");
int tests=kb.nextInt();
int [][] grades= new int [students][tests+1];
getScores(grades);
printArray(grades);
我觉得我很接近,但我总是收到错误。在列主要形式中填充数组是主要处理所以 "get scores" 方法和底部声明的数组是我认为我的问题所在请帮助我
在您的 getScores
方法中,内部 for 循环第一个 r
作为计数器缺少大括号,正确的代码应该是正确的,如果我正确地理解了您想要做的事情,
for (r = 0; r < matrix.length; r++) {
System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
matrix[r][c] = kb.nextInt();
}
此外,我的理解是在这行代码中它应该只是 tests
而不是 tests + 1
int [][] grades= new int [students][tests+1];
而且,大多数情况下,当您指定在哪一行收到什么异常时,最好回答您的查询,因此 SO 中的用户不必实际执行您的代码来查看您面临的问题。
希望对您有所帮助!!