我在编程方面的经验很少,而且我现在正在大学学习我的第一门编程类(class)。我们在类里面遇到一个问题,要编写一个程序,生成从 1 到 6 的随机数序列,并将括号放在一系列连续数字周围。例如,如果序列为 12553124322223655631,则程序将打印 12(55)31243(2222)36(55)631。
这是我到目前为止的代码:
package inRun;
import java.util.Random;
public class Prob612 {
public static void main(String args []){
Random rand = new Random();
boolean inRun = false;
int i = 0;
int [] values;
values = new int[20];
while (i < values.length){
int j = rand.nextInt(7);
if (j > 0 && j <= 6){
values[i] = j;
i++;
}
}
for (i = 0; i < values.length; i++){
if (inRun){
if (values[i] != values[i + 1]){
System.out.print(")");
inRun = false;
}
}
if (inRun = false){
if (values[i] == values[i - 1]){
System.out.print("(");
inRun = true;
}
}
System.out.print(values[i]);
}
if (inRun){System.out.print(")");}
}
}
当我运行这个程序时,它会打印序列,但不带括号。我想我需要使用增强的 for
循环,但我不知道如何使用这样的程序来做到这一点。任何见解将不胜感激。谢谢。
最佳答案
你已经差不多解决了。需要注意两点:
- 您在 if 语句中将 boolean 值指定为 false。
(inRun = false)
应为(inRun == false)
。 - 在最后一项上时,您的值[i + 1] 超出了数组。
这应该可以做到。
boolean inside = false;
for (int i = 0; i < values.length; i++) {
if (inside) {
if (values[i] != values[i - 1]) {
System.out.print(')');
inside = false;
}
} else {
if (i < values.length - 1) {
if (values[i + 1] == values[i]) {
System.out.print('(');
inside = true;
}
}
}
System.out.print(values[i]);
}
关于java - 编写一个程序,生成 20 次掷骰子的随机序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491728/