试图创造机会计算器

时间:2013-05-17 12:38:18

标签: java arrays loops random int

我是Java的新手,想要尝试制作一个可以随机生成2个数字的代码,并且它会跟踪2个数字相同的次数。然后在X次尝试之后,它将计算它发生的可能性。

randoms除以它们相同的次数

import java.util.Random;

public class RandomTest {
    public static void main(String[] args) {
        int[] anArray;
    anArray = new int[100000];
    Random randomGenerator = new Random();
    for (int loop = 1; loop < 1000; loop++) {
        int random1 = randomGenerator.nextInt(100);
        int random2 = randomGenerator.nextInt(100);
        if (random1 == random2) {
            int number = number + 1;
            countArray[number] = loop;
        }
        if (loop == 1000) {
            System.out.println("Took " + loop + " randoms.");
            break;
        }
        else {}
        }
    }
}

主要问题似乎是要填充数组以及进入/退出循环。

2 个答案:

答案 0 :(得分:4)

以下是我的代码版本:

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

public class RandomTest {
    public static void main(String[] args) {
        ArrayList<Integer> duplicates = new ArrayList<Integer>();
        int random1 = 0, random2 = 0;
        Random randomGenerator = new Random();
        for (int loop = 1; loop <= 1000; loop++) {
            random1 = randomGenerator.nextInt(100);
            random2 = randomGenerator.nextInt(100);
            if (random1 == random2) {
                duplicates.add(new Integer(random1));
            }
        }

         for (Integer i : duplicates) {
             System.out.println("Duplicate: "+i.toString());
         }
    }
}

您的解决方案包含许多问题:

int number = number + 1;

上面将创建一个名为number的新int,并赋予它null + 1的值,这是因为上面的内容可以分成2行:

int num;
num = num + 1;

第一行将为名为num的变量保留内存空间。第二行将尝试将(num + 1)的值放入num中。因为我们正在调用num并且它尚未初始化 - 这将给我们一个java.lang.Error(至少这是我得到的)。

正如您所看到的那样,将数字放在for循环之外并将其初始化为:

int number = 0;
for (int loop = 1; loop <= 1000; loop++) {
    number = number + 1;
}

将数字的值增加1,999次。

这让我想到了下一点。 for循环永远不会使loop = 1000,因为条件会在条件为真之前停止循环,所以当for循环结束时,循环将等于999.如果你想循环完成loop = 1000你应该使用{{ 1}}。此外,if条件不是必需的,因为当循环结束时它将继续执行其下面的其余代码。

我的解决方案中根本没有使用loop <= 1000,这是因为我使用的是ArrayList,它本质上是一个更高级的数组版本,可以动态增长并执行其他很酷的东西。不幸的是ArrayLists需要包含对象,所以我将每个number包装在int对象中,这很好。最后,我使用for循环遍历重复列表,为每个结果打印出来。

希望这会有所帮助,如果您有任何问题,请随时在下面发表评论。

答案 1 :(得分:0)

你可能想对这一行做点什么:

    int number = number + 1;

要逐步执行数组,请将数字设置为零

int number = 0;
在进入循环之前

然后用

增加数字
number = number + 1;