【发布时间】:2016-11-01 22:20:39
【问题描述】:
我正在尝试使用此方法按升序对整数数组进行排序。但我的 for 循环只运行一次。
public void sortArray()
{
boolean sorted = false;
while(sorted == false)
{
int temp;
for(int i = 0; i < inArray.length - 1; i++)
{
if(inArray[i] > inArray[i + 1])
{
temp = inArray[i];
inArray[i] = inArray[i + 1];
anArray[i + 1] = temp;
}
}
sorted = true;
}
}
我知道这与我处理布尔标志的方式有关,但我不确定如何修复它。任何建议,将不胜感激。提前致谢。
【问题讨论】:
-
=是赋值,==是相等。这就是为什么你应该总是写while (!sorted)。它可以保护您免受这种错字的影响。 -
“但是我的 for 循环只运行了一次。” 不,你当前的
while循环不会执行循环体根本 i>,因为上面提到的 azurefrog。如果你解决了这个问题,它只会运行一次,因为你在循环结束时无条件地设置了sorted = true。 -
@azurefrog 感谢您指出这一点,我实际上在我的实际代码中将其命名为
==,但在此处输入时搞砸了。 -
@Bluasul:你为什么要重新输入它?这就是复制和粘贴的用途。
-
@T.J.Crowder 我觉得再次输入它会更仔细地审查它,并且可能会在发布问题之前找到解决方案。结果是相反的,因为我最终把它弄得更糟了,但是哦,好吧。
标签: java arrays sorting bubble-sort