我制作了2D arrray,可以打印一些随机元素。
现在我需要一种方法来计算元素的总和,但只需要在主对角线下面的元素。
这是我的代码......
class Init {
public static void main(String[] args) {
int n = 0;
int m = 0;
int aray[][];
Random random = new Random();
Scanner tastatura = new Scanner(System.in);
int[][] array = new int[n][m];
n = tastatura.nextInt();
m = tastatura.nextInt();
array = new int[n][m];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = random.nextInt(20);
}
}
for (int[] a : array) {
System.out.println(Arrays.toString(a));
}
}
}
我这样做了......现在我可以总结,但是当我尝试多种相同的数字时,我正在考虑为什么会这样?
Scanner scanner = new Scanner(System.in);
System.out.print("Unesite duzinu kolona i redova : ");
int rows = scanner.nextInt();
int columns = rows;
int[][] matrix = new int[rows][rows];
Random random = new Random();
System.out.println("Nasumicni/random brojevi su :");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = random.nextInt(20);
}
}
for (int[] a : matrix) {
System.out.println(Arrays.toString(a));
}
//here is the logic which sum those elements
int sum = 0;
for (int i = 1; i < rows; i++) {
for (int j = i - 1; j >= 0; j--) {
sum = sum + matrix[i][j];
}
}
System.out.println("\nMatrix is : ");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
System.out.println("Proizvod elemenata ispod glavne dijagonale je: " + sum);
答案 0 :(得分:1)
这个怎么样?
int s = 0;
for(int i = 1; i < m; ++i)
for(int j = 0; j < i; ++j)
s += a[i][j];
这个选择性循环通过主对角线下方的元素并将它们相加,而不会循环遍历整个矩阵并使其更长。
答案 1 :(得分:0)
矩阵的主对角线由位于从左上角到右下角的对角线上的元素组成。但是因为你想要那些元素&#34;低于&#34;主对角线,这是我想出的算法。
int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (i == j && (i + 1 < n))
{
int temp = i + 1;
while (temp < n)
{
sum += arr[temp][j];
temp++;
}
}
此外,您多次声明int[][] array
。获得n和m的值后,只需要声明一次。
答案 2 :(得分:0)
为(I = 0;我
对于(j = 0;Ĵ
{
如果(J&GT;ⅰ)
D1 + = A [i] [j] ;. //在对角线上方
否则
如果(I&GT; j)的
D2 + = A [i] [j] ;. //在对角线下方
}