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