随机,与过去10不一样。(Java)

时间:2011-02-19 13:50:48

标签: java random

我是新来的.. 我想制作一个代码来记住最后10个数字并且不一样。

private static ArrayList<Integer> nums = new ArrayList<Integer>();

public static void main(String[] args) 
{
    System.out.println(getRandomNumber());
}

public static int getRandomNumber()
{
    int randomN = 0, rand = Rnd.nextInt(20);
    while (nums.size() == 10)
    {
        nums.remove(nums.get(0));
        continue;
    }
    if (!nums.contains(rand)) 
    {
        nums.add(rand);
        randomN = rand;
    }
    else getRandomNumber();

    return randomN;
}

当数组达到10个值时,第一个将被删除..我希望你明白我想要的东西:)谢谢

3 个答案:

答案 0 :(得分:1)

尝试使用ArrayDequeue,当长度增加到10以上时,您可以简单地从尾部移除项目。

答案 1 :(得分:0)

我要么使用圆形数组或链表。取决于您打算使用的数字列表。

答案 2 :(得分:0)

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

class main{
    public ArrayList<Integer> nums;
    public Random generator;

    public static void main(String[] args){
        // Calling Start
        (new main()).start();
    }

    public void start(){
        nums =  nums = new ArrayList<Integer>();

        generator = new Random();

        for(int i=0;i<15;i++){
            add(generator.nextInt(20));
            print();
        }
    }

    public void add(int newNumber){
        // Check by iterating if i is already in nums
        Iterator it = nums.iterator();

        while(it.hasNext()){
            if(newNumber == (Integer) it.next())
                return;     // i is already in our list
                            // so get out add()
        }

        if(nums.size() == 10){
            int forward = nums.get(0);

            for(int i = 1; i < 10; i++){
                // Move numbers back 1 position
                nums.set(i-1,forward);
                // Save next number in forward
                forward = nums.get(i);
            }
        }

        nums.add(newNumber);
    }

    public void print(){
        String str = "";
        Iterator it = nums.iterator();

        if(it.hasNext()){
            str += "num: [ " + (Integer) it.next();
        }

        while(it.hasNext()){
            str += " , " + (Integer) it.next();
        }

        str += " ]";

        System.out.println(str);
    }
}