创建一个二维数组,第一个数字是行数
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();
}
}
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();
}
}