订购10个号码列表

时间:2018-01-27 18:04:02

标签: java arrays max min atomicinteger

我有一个大小为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);
        }
    }
}

以下是如何调用它的示例:

1 个答案:

答案 0 :(得分:7)

布鲁克,你的'j'循环中有一个小错误。您已经保存了变量(temp)的状态,但是j循环中的逻辑丢失了状态。这个新逻辑保留了列表中前一个元素的状态。

试试这个:

schema.virtual('passwordConfirmation')
    .get(function() {
      return this._passwordConfirmation;
    })
    .set(function(value) {
        this._passwordConfirmation = value;
    });

schema.pre('validate', function(next) {
    if (this.password !== this.passwordConfirmation) {
        this.invalidate('passwordConfirmation', 'enter the same password');
    }
    next();
});