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



我不知道为什么我的代码中有一个无限循环。输入阵列后,会发生一些错误,并且控制台不会停止输入。有人可以帮忙吗?这是可能有问题的代码:

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;
}

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

也许您应该更改

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

to

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

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

to

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

最新更新