我有一个大小为 10 的原子整数数组。我正在使用这个数组来组织线程发送的数字 1-10。这个 1-10 最终将能够更改为大于 10 的数字范围,并且该列表将包含该范围内的 10 个最大数字。我可以看到进入循环的数字并认识到它们大于当前存在的数字。但是,当它被打印出来时,数组中的数字永远不会超过 2 个。我试图在调试模式下跟踪我的代码,但是,它看起来好像按我的预期工作。我觉得我的逻辑可能有一个简单的错误?我完全确定所有值都输入了函数,因为我已经三重检查了这一点。我从应该包含最高值的数组末尾开始,然后在确定插槽后向下交换。我将不胜感激。这只是一个简单的实验,以便在我尝试处理家庭作业之前掌握基础知识。
这是我的代码示例:
public class testing{
static AtomicIntegerArray maxList = new AtomicIntegerArray(10);
final static int n = 10;
static void setMax(int value)
{
for(int i = 9; i >= 0; i--)
{
if(value > maxList.get(i))
{
int temp = maxList.get(i);
maxList.set(i,value);
if(i == 0)
{
maxList.set(i, value);
}
else
{ for(int j = i-1; j > 0; j--)
{
maxList.set(j, temp);
temp = maxList.get(j-1);
}
}
break;
}
}
public static void main(String[] args)
{
for (int i = 0; i < n; i++)
{
setMax(i);
}
}
}
这是如何调用它的示例: