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

问题描述

1。创建一个二维二维数组,该数组的大小取决于用户输入-第一个数字是行数。 2.允许用户使用他们选择的整数填充数组。 3.在屏幕上打印对角线的总和。例如,见下文

示例2D数组:

|  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。您将返回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

您的答案: 输入行号:输入(0,0)的数字 输入(0,1)的数字 输入(0,2)的数字 输入(0,3)的数字 输入(0,4)的数字 输入(0,5)的数字 线程“主”中的异常java.lang.Arrayindexoutofboundsexception:5 在SumOfDiagonals.main(SumOfDiagonals.java:13)

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

您的成绩为52

解决方法

第二个for循环中有一个错字。

    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();
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...