我正在玩耍并学习一些Java语言,所以我真的是个新手。 e ...我的问题是-我正在生成1到5之间的5个随机数。计算在这些随机数中生成1号,2号,3号,4号和5号的次数。
public static void main(String[] args) {
Random rand = new Random();
int[] array = new int[5];
int randomNumber;
int i;
int p1 = 0;
int p2 = 0;
int p3 = 0;
int p4 = 0;
int p5 = 0;
System.out.println("Random numbers:");
for (i = 0; i < 5; i++) {
randomNumber = rand.nextInt(5) + 1;
System.out.print(randomNumber);
if (i < 4) {
System.out.print(", ");
}
if (randomNumber == 1) {
array[0] = p1++;
} else if (randomNumber == 2) {
array[1] = p2++;
} else if (randomNumber == 3) {
array[2] = p3++;
} else if (randomNumber == 4) {
array[3] = p4++;
} else if (randomNumber == 5) {
array[4] = p5++;
}
}
//výpis četnosti
System.out.println();
System.out.println();
System.out.println("Histogram: ");
for (i = 0; i < array.length; i++) {
System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
}
}
该程序对我的理解有些奇怪。输出始终显示随机生成的包中包含的数字的真实计数正好减去1,我真的不明白为什么。 ...因此,如果从随机数生成器生成3的次数为3,则我的程序显示的3的数字仅为“ 2”。
我真的很感激能帮助我。谢谢。
答案 0 :(得分:0)
array[0] = p1++;
与:
array[0] = p1;
p1 = p1 + 1;
我希望这足以让您发现问题。
答案 1 :(得分:0)
您要在后增加计数变量。因此,您第一次计数时分配给int数组存储区的内容是0。
相反,您可以通过如下方式简化此过程:仅增加数组中的整数:
public static void main(String[] args) {
Random rand = new Random();
int[] array = new int[5];
int randomNumber;
int i;
System.out.println("Random numbers:");
for (i = 0; i < 5; i++) {
randomNumber = rand.nextInt(5) + 1;
System.out.print(randomNumber);
if (i < 4) {
System.out.print(", ");
}
array[randomNumber - 1]++;
}
//výpis četnosti
System.out.println("\n\nHistogram: ");
for (i = 0; i < array.length; i++) {
System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
}
}
运行此命令会得到以下输出:
Random numbers:
2, 3, 5, 3, 2
Histogram:
Number 1: 0.
Number 2: 2.
Number 3: 2.
Number 4: 0.
Number 5: 1.