实际上我尝试在hackerrank中实现问题的代码,我们需要找到对角线差异并给出绝对值。但是当我尝试在循环外打印输出时,它表示无法访问的代码。如果我在for循环中使用它,我会得到无限循环。
import java.util.*;
public class HourGlass
{
public static void hour(int k)
{
Scanner sc=new Scanner(System.in);
int n,sum1,sum2,sum3,i=0,j=0;
n=sc.nextInt();
int a[][]=new int[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=sc.nextInt();
}
}
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{
i=0;
j=0;
{
sum1=a[i][j]+a[i+1][j+1]+a[i+2][j+2];
sum2=a[i+2][j]+a[i+1][j+1]+a[i][j+2];
sum3=sum1-sum2;
k =Math.abs(sum3);
}
System.out.println(k);
}
}
}
public static void main(String args[]){
HourGlass h=new HourGlass();
h.hour(0);
}
}
答案 0 :(得分:3)
你有没有看到你在循环中修改循环变量?
删除
i=0;
j=0;
循环将结束。
答案 1 :(得分:3)
for(j=0;j<=n-1;j++)
{
i=0; // this line needs to go away. its resetting the counter.
j=0; // this line needs to go away. its resetting the counter.
}
删除上面评论的两行。每次循环运行时,它都会将i
和j
设置为0。
答案 2 :(得分:0)
但是,如果我删除2行,则会抛出arrayindexoutofboundException。 我想解释一下我的逻辑。实际上我需要将数组初始化为0并将两个索引值i和j遍历到代码中提到的尊重位置。请帮助