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