我正在尝试将某些内容添加到我的程序中。运行是相邻重复值的序列。因此,该程序的目的是创建20个数字的字符串(在1-6的范围内(,并在运行周围检测运行和put((,例如1 2(5 5(3 1 2 4 3(22 2 2(3 6(5 5(6 3 1。
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int[] number = new int[20];
for(int i = 0; i < number.length; i++) {
number[i] = (int)(Math.random()*6 + 1);
}
System.out.println("If you want to see all of the runs return R, if you only want to see the Longest return L");
String input = reader.nextLine();
System.out.print("The array is: ");
System.out.println(Arrays.toString(number));
if (input.equals("r") || input.equals("R")) {
System.out.println("All of the runs are");
}
}
您想做以下操作:
- 有一个标志,即序列是否已经开始
- 循环,遍历你的数字数组
在For-loop
中- 检查数组中的下一个数字是否等于当前
- 如果是相同的,请启动序列
- 将当前号码添加到您的输出
- 检查数组中的下一个数字是否等于当前
- 如果它是不是 并且正在进行序列,请结束序列
- 重复
当然,启动序列意味着您必须添加一个启动括号,而结束序列时要添加结束括号。
示例:
public void outputSequence() {
Random ran = new Random();
int[] numbers = new int[20];
for(int i = 0; i < 20; i++) numbers[i] = ran.nextInt(6) + 1;
boolean startPar = false;
StringBuilder output = new StringBuilder("Sequence: ");
for(int i = 0; i < 20; i++) {
if(i != 19 && numbers[i] == numbers[i+1] && !startPar) {
output.append("( ");
startPar = true;
}
output.append(numbers[i] + " ");
if(i != 19 && numbers[i] != numbers[i+1] && startPar) {
output.append(") ");
startPar = false;
}
}
if(startPar) output.append(")");
System.out.println(output);
}
尽可能原始的开始。您如何在数组中找到跑步?您查看第一个数字,并将其与第一个数字进行比较,如果它与您的运行匹配,则您需要将其与第三个等进行比较...如果与您不匹配,则可以开始查看第二个数字。我会使用StringBuilder添加"("(符号,并可能在最后解析结果字符串以找到最长的运行。或者您可以将"记录运行"保存在另一个变量中。