我在java输出中得到无限循环

时间:2016-01-20 20:47:22

标签: java multidimensional-array

实际上我尝试在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);
    }
}

3 个答案:

答案 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.

}

删除上面评论的两行。每次循环运行时,它都会将ij设置为0。

答案 2 :(得分:0)

但是,如果我删除2行,则会抛出arrayindexoutofboundException。 我想解释一下我的逻辑。实际上我需要将数组初始化为0并将两个索引值i和j遍历到代码中提到的尊重位置。请帮助