我对如何从我的程序中获取一个范围内随机生成的数字,将其存储到一个数组中,并从该数组中读取并打印出该数字生成了多少次感到有些困惑。
对于我正在使用的随机导入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 ,并让0
be 1
,1
be 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] 删除。
我来说两句