是什么导致线程中出现异常;“主要”;java.lang.ArrayIndexOutOfBoundsException:5 publicstaticvoidsumrowsandcols(int[]]a){ int[]和=新的int[5]; int i,j,x; //行之和 对于(i=0;i

是什么导致线程中出现异常;“主要”;java.lang.ArrayIndexOutOfBoundsException:5 publicstaticvoidsumrowsandcols(int[]]a){ int[]和=新的int[5]; int i,j,x; //行之和 对于(i=0;i,java,Java,这句话 public static void sumrowsandcols(int[][] a) { int[] sum = new int[5]; int i, j, x; // Sum of rows for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { sum[i] += a[i][j]; } } for (x = 0; x &l

这句话

public static void sumrowsandcols(int[][] a) {

    int[] sum = new int[5];
    int i, j, x;
    // Sum of rows
    for (i = 0; i < 5; i++) {
       for (j = 0; j < 5; j++) {
           sum[i] += a[i][j];
       }
    }
    for (x = 0; x < 5; x++) { 
        System.out.println(sum[x]);
    }

    // Sum of columns
    for (i = 0; i < 5; i++) {
       for (j = 0; j < 5; j++) {
           sum[i] += a[j][i];
       }
    }

    for (x = 0; x < 5; x++) { 
        System.out.println(sum[x]);
    }
  }


  public static int[][] generateArray(Scanner myScanner) {

    int numbers[][] = new int[5][5];
    int i, j, x;
    for (i = 0; i < 5; i++)
      System.out.println("Please enter 5 integers for row " + (i+1));     
      for (x = 0; x < 5; x++) {
        j = myScanner.nextInt();
        numbers[i][x] = j;
      } 
      return numbers;
  }

  // Main method. Collection happens, then calls sumrowsandcols. 

  public static void main(String[] args) {   

    int i, j, x;
    Scanner myScanner = new Scanner(System.in);    
    int[][] numbers = generateArray(myScanner);

    // Collect information by row        


    // Print sum of rows and columns
    sumrowsandcols(numbers);    
   }
for (i = 0; i < 5; i++)
   System.out.println("Please enter 5 integers for row " + (i + 1));
被调用。结果是出现
ArrayIndexOutOfBoundsException
。这就是为什么在循环的
中使用大括号来限定范围很重要的原因。在
循环中为
本身声明变量表明它们在范围内:

numbers[i][x] = j;
for(int i=0;i<5;i++){
System.out.println(“请为行“+(i+1)”输入5个整数);
对于(int x=0;x<5;x++){
j=myScanner.nextInt();
数字[i][x]=j;
}
}
当你写

for (int i = 0; i < 5; i++) {
   System.out.println("Please enter 5 integers for row " + (i + 1));
      for (int x = 0; x < 5; x++) {
         j = myScanner.nextInt();
         numbers[i][x] = j;
      }
}
(i=0;i<5;i++)的

System.out.println(“请为“+(i+1)”行输入5个整数;”
这会一次打印出所有语句,另一个循环在打印5次后执行。将大括号放在for循环之后,以将其全部分组

 for (i = 0; i < 5; i++)
  System.out.println("Please enter 5 integers for row " + (i+1));     '
publicstaticint[]generatarray(扫描器myScanner){
整数编号[][]=新整数[5][5];
int i,j,x;
对于(i=0;i<5;i++){
System.out.println(“请为行“+(i+1)”输入5个整数);
对于(x=0;x<5;x++){
j=myScanner.nextInt();
数字[i][x]=j;
}
}
返回号码;
}

查看堆栈跟踪。查找发生异常的行,并指出该代码的哪一行。知道异常发生的位置将帮助人们找出它发生的原因。我找不到错误,但
Sum of columns
comment下的代码看起来可疑…正确,你想让for循环用大括号括起来。如果我在循环中声明了var,可能会更明显,而不是在循环同意之前,这会导致编译器抱怨变量超出了我输入的范围,并且没有注意到,sorry@DanN. 这是一个非常常见的错误。在使用for循环时,一定要养成使用大括号的习惯。
 public static int[][] generateArray(Scanner myScanner) {

    int numbers[][] = new int[5][5];
    int i, j, x;
    for (i = 0; i < 5; i++){
        System.out.println("Please enter 5 integers for row " + (i + 1));
    for (x = 0; x < 5; x++) {
        j = myScanner.nextInt();
        numbers[i][x] = j;
    }
    }
    return numbers;
}