我的求和代码中的无限循环

时间:2016-06-15 07:50:44

标签: java infinite-loop

我无法弄清楚为什么我的代码中存在无限循环。 一旦我输入我的输入数组,就会发生错误,控制台也不会停止输入。有人可以帮忙吗? 以下是可能存在问题的代码:

public static triplet<Integer,Integer,Integer> maxsum(int[] input)
{
    triplet<Integer,Integer,Integer> ans=new triplet<Integer, Integer, Integer>(0,0,0);

    int l=input.length;
    int maxSum=0;
    int i=0;

    while(i<input.length);
    {
        System.out.println("input taken");
        int j=i;
        int sum=0;
        if(input[i]>=0)
        {
            while(j>=0&&j<l)
            {
                sum=sum+input[j];
            }
            if(sum>maxSum)
            {
                ans.c=sum;
                ans.b=j;
                ans.a=i;
            }
            i=j+1;
        }
        else
            i++;
    }
    return ans;
}

1 个答案:

答案 0 :(得分:1)

没有什么可以阻止你的内循环。

也许你应该改变

while(j >= 0 && j < l)
{
    sum = sum + input[j];
}

while(input[j] >= 0 && j < l)
{
    sum = sum + input[j];
    j++;
}

        if(sum>maxSum)
        {
            ans.c=sum;
            ans.b=j;
            ans.a=i;
        }

        if(sum>maxSum)
        {
            ans.c=sum;
            ans.b=j;
            ans.a=i;
            maxSum=sum;
        }