0

我正在尝试创建一个程序来生成随机数并存储到arraylist. 同时获取存储做的号码multiply

我已经存储了生成的号码,但我如何实际获得我想要的号码。对于这个例子,我试图得到3rd number,我错过了哪一步?

public class arraylist {

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<Integer>();
        Random rand = new Random();

        int numtogen;
        int third;
        Scanner scan = new Scanner(System.in);
        System.out.println("How many number do you want to generate: ");
        numtogen = scan.nextInt();
        System.out.println("What number do you want to multiply with the third number: ");
        third = scan.nextInt();

        HashSet<Integer> generated = new HashSet<Integer>();

        // Prevent repeat
        for (int x = 1; x <= numtogen; ++x) {
            while (true) {
                // generate a range from 0-100
                int ranNum = rand.nextInt(100);

                if (generated.contains(ranNum)) {

                    continue;
                } else {
                    list.add(ranNum);
                    System.out.println("Number " + x + "=" + " = " + ranNum);
                    break;
                }

            }

        }
        int numinlist;
        while (!list.isEmpty()) {

            // Integer[] numlist= numbinlist.hasNextInt;

            // int answer = numlist[2]*third;
            // System.out.println("Answer to first number  = "+answer);
        }
    }

}
4

3 回答 3

3

您可以将非重复数字的生成更改为:

Set<Integer> generated = new LinkedHashSet<Integer>();
// Prevent repeat
while (generated.size() < numtogen) {
    generated.add(rand.nextInt(100));
}
List<Integer> list = new ArrayList<Integer>(generated);

我会在了解您的实际问题并知道答案后立即编辑此答案。

于 2013-04-24T07:01:15.580 回答
3

如果您想获得第三个生成的号码,请尝试以下操作:

int number = list.get(2);
于 2013-04-24T07:02:33.700 回答
1

改变这个:

for (int x = 1; x <= numtogen; ++x) {
    while (true) {
        // generate a range from 0-100
        int ranNum = rand.nextInt(100);

        if (generated.contains(ranNum)) {

            continue;
        } else {
            list.add(ranNum);
            System.out.println("Number " + x + "=" + " = " + ranNum);
            break;
        }
     }
 }

至:

for (int x = 1; x <= numtogen; ++x) {
    // generate a range from 0-100
    int ranNum = rand.nextInt(100);
    if (generated.contains(ranNum)) {
        continue;
    } else {
        list.add(ranNum);
        System.out.println("Number " + x + "=" + " = " + ranNum);
    }
}

然后,访问第三个数字所需要做的就是:

int answer = (list.get(2) * third);
于 2013-04-24T07:16:32.740 回答