我需要帮助,我需要写一个数组,用math.random放入变量,然后计算斜线



数组打印的是零,然后是数字并且不计算倾斜

我试着切换变量并重写到编码循环

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,nn,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--;
}

希望这能解决你的问题。

最新更新