数组打印的是零,然后是数字并且不计算倾斜
我试着切换变量并重写到编码循环
import java.util.Scanner;
public class shishistimempire {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s= new Scanner(System.in);
int i;
System.out.println("enter the size of the array");
i=s.nextInt();
int[][] arr= new int[i][i];
for(int j=0;j<arr.length;j++) {
for(int n=0;n<arr.length; n++) {
arr[j][n]= (int) (Math.random()*i+1);
}
for(int y=0;y<arr.length;y++) {
for(int r=0;r<arr.length;r++) {
System.out.print(arr[y][r] + " ");
}
System.out.println();
}
}
int am=0 , ar=0;
for (int o=0; o<arr.length;o++) {
ar= ar+arr[o][o];
}
for(int h=0; h<arr.length;h++) {
am=am+arr[i-1][i-1];
i--;
}
System.out.println("your main slant is" + am);
System.out.println("your second slant is" + ar);
}}
enter the size of the array
4
1 1 4 3
0 0 0 0
0 0 0 0
0 0 0 0
1 1 4 3
2 2 3 2
0 0 0 0
0 0 0 0
1 1 4 3
2 2 3 2
3 1 2 4
0 0 0 0
1 1 4 3
2 2 3 2
3 1 2 4
4 3 2 2
your main slant is7
your second slant is7
问题的答案是您做了两次相同的计算。问题是,您首先从0,0开始,然后在n,n结束。在第二次计算中,您从n,n开始,然后向后计算到0,0
因此,要计算第二个"倾斜",必须首先从0,n或n,0开始,然后增加"x"坐标并减少"y"坐标或增加"y"座标并减少"x"座标。
在代码中,这可能看起来像这样:
int x = 0, y = 0, am = 0, ar = 0;
for (int i = 0; i < arr.length; i++) {
ar += arr[x][y];
x++;
y++;
}
x = 0;
y = arr.length - 1;
for (int i = 0; i < arr.length; i++) {
am += arr[x][y];
x++;
y--;
}
希望这能解决你的问题。