创建一个二维数组,第一个数字是行数

Create a 2D array with first number being the number of rows

1.Create 一个大小由用户输入决定的方形二维数组 - 第一个数字是行数。 2.Allow 用户用他们选择的整数填充数组。 3. 在屏幕上打印对角线之和。例如见下文

二维数组示例:

|  1  2  3  4 |
|  5  4  6  9 |
| 11 13 16  6 |
|  2  4 18 20 |

对角线1 = 1, 4, 16, 20。对角线2 = 4, 6, 13, 2。对角线1的和为41。(1 + 4 + 16 + 20)对角线2的和为25. (4 + 6 + 13 + 2) 两条对角线的和是 66。你会 return 66,只有两条对角线的和。

我写的代码如下,但缺少以下内容:

我知道我需要在某处填充数组 - 但不确定在哪里??? 当我 运行 对角线求和时,它不能让我正确填充数组 ??

import java.util.Scanner;
public class SumOfDiagonals{
    public static void main(String [] args){
        Scanner input = new Scanner (System.in);
        int [][] matrix;
        System.out.print ("Enter row number:");
        int row = input.nextInt();
        int col = row;
        matrix = new int [row][col];
        for (int i=0; i<matrix.length; i++){
            for (int j = 0; i<matrix[0].length; j++){
                System.out.print ("Enter a number for ( "+i+", "+j+")");
                matrix[i][j]=input.nextInt();
            }
        }
        int sum1=0;
        int sum2=0;
        for (int i=0;i<matrix.length;i++){
            sum1 += matrix[i][i];
            sum2 += matrix[i][matrix.length-1-i];
            }
            System.out.println ("Diagonal 1: "+sum1);
            System.out.println ("Diagonal 2: "+sum2);
            System.out.println ("Sum of two diagonals: " + (sum2+sum1));
        }
    }

我测试代码时报错如下:

您的程序经过以下测试: 5 5 4 3 2 1 1 2 3 7 5 1 1 1 1 1 11 12 13 14 15 15 14 13 12 11

您的回答: 输入第 number:Enter 行的数字 ( 0, 0) 为 ( 0, 1) 输入一个数字 为 ( 0, 2) 输入一个数字 为 ( 0, 3) 输入一个数字 为 ( 0, 4) 输入一个数字 为 ( 0, 5) 输入一个数字 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:5 在 SumOfDiagonals.main(SumOfDiagonals.java:13)

预期答案: 对角线总和 = 69

你的成绩是 52

你的第二个 for-loop 有错别字。

    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; *HERE* i < matrix[0].length; j++) {
            System.out.print("Enter a number for ( " + i + ", " + j + ")");
            matrix[i][j] = input.nextInt();
        }
    }

应该是

    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[0].length; j++) {
            System.out.print("Enter a number for ( " + i + ", " + j + ")");
            matrix[i][j] = input.nextInt();
        }
    }