问题描述
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();
}
}