在数组中存储随机数

约翰·D·洛克菲勒

我对如何从我的程序中获取一个范围内随机生成的数字,将其存储到一个数组中,并从该数组中读取并打印出该数字生成了多少次感到有些困惑。

对于我正在使用的随机导入java.util.concurrent.ThreadLocalRandom

public static void main(String[] args) { 
    char quitOption = 'q'; 
    char continueOption = 'c';
    char input;
    int[] myArray;
    Scanner console = new Scanner(System.in);

    do {
        int roll = ThreadLocalRandom.current().nextInt(1, 6);
        System.out.println("Roll is " + roll);
        System.out.println("Enter c to continue or enter q to quit ");
        input = console.nextLine().charAt(0);

        if (input == continueOption || input == 'C') {
            roll = ThreadLocalRandom.current().nextInt(1, 6);
            System.out.println("Roll is " + roll);
            System.out.println("Enter c to continue or enter q to quit ");
            input = console.nextLine().charAt(0);
        } else if (input == quitOption || input == 'Q') {
            System.exit(0);
        }
    } while (continueOption == 'c' || continueOption == 'C');
}
格洛杰特

您必须弄清楚如何克服两个问题:

  • 弄清楚会有多少卷,因为Array's 是固定大小的

  • 计算一个数字滚动了多少次

您可以使用 a List,然后使用内置方法,例如Collections.frequency,或者如果您仅限于 an Array,请检查以确保添加另一个数字不会超出范围,(如果它将然后将其复制到新的Array)然后迭代Array并计算每个数字出现的次数。

但是,我们知道将出现的数字范围。那么为什么不用Array六个元素初始化 an ,并让0be 11be 2,等等。然后每次滚动该数字时,我们都会增加相应数字的索引。所以像:

int roll = ThreadLocalRandom.current().nextInt(1, 6);
arr[roll -1]++;

因此,如果滚动了 2,我们将向1th索引添加 1

[0, 1, 0, 0, 0, 0]

等等。然后,当您需要计算索引时,它是一个简单的循环:

for(int i = 0; i < arr.length; i++) {
   System.out.println(i + 1 + " occurs: " + arr[i] + " times");
}

你也让你的循环复杂化了。可以简化为:

char input;
int[] myArray = new int[6];
Scanner console = new Scanner(System.in);
do {
    int roll = ThreadLocalRandom.current().nextInt(1, 6);
    System.out.println("Roll is " + roll);
    myArray[roll -1]++;
    System.out.println("Enter c to continue or enter q to quit ");
    input = console.nextLine().charAt(0);

} while (input == 'c' || input == 'C');
for(int i = 0; i < myArray.length; i++ ) {
    System.out.println(i + 1 + " occurs: " + myArray[i] + " times");
}

示例运行:

Roll is 4
Enter c to continue or enter q to quit 
c
Roll is 1
Enter c to continue or enter q to quit 
c
Roll is 3
Enter c to continue or enter q to quit 
c
Roll is 3
Enter c to continue or enter q to quit 
c
Roll is 1
Enter c to continue or enter q to quit 
c
Roll is 1
Enter c to continue or enter q to quit 
q
1 occurs: 3 times
2 occurs: 0 times
3 occurs: 2 times
4 occurs: 1 times
5 occurs: 0 times
6 occurs: 0 times

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章