i am trying to calculate it but all i am getting is zero i need to calculate the sum of primary diagonal elements and secondary diagonal elements and then absolute difference of their sum.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int a[][] = new int[n][n];
int sum=0;
int i=0;
int j=0;
int k=n-1;
int sum1=0;
for(i=0; i < n; i++){
for(j=0; j < n; j++){
a[i][j] = in.nextInt();
}
}
int temp=n;
int temp2=n;
while(temp>0 && i<n && j<n)
{
sum=a[i][j]+sum;
temp=temp-1;
i++;j++;
}
while(temp2>0 && i<n && k>=0)
{
sum1=a[i][k]+sum1;
temp2=temp2-1;
i++; k--;
}
int diff=sum-sum1;
if(diff<0)
diff=-1*diff;
System.out.println(diff);
}
}
After the first for loop, i and j both have reached value n. That means, i = n
and j = n
.
So while loops won't pass. To avoid this, initialize i and j again.
i = 0;
j = 0;
while(temp>0 && i<n && j<n)
{
sum=a[i][j]+sum;
temp=temp-1;
i++;j++;
}
i = 0;
while(temp2>0 && i<n && k>=0)
{
sum1=a[i][k]+sum1;
temp2=temp2-1;
i++; k--;
}
Alternative: you could made the code simpler.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int a[][] = new int[n][n];
int sum = 0, sum1 = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = in.nextInt();
// primary diagonal
if (i == j) {
sum += a[i][j];
}
// secondary diagonal
if (i == n - j - 1) {
sum1 += a[i][j];
}
}
}
System.out.println(Math.abs(sum - sum1));
}