我试图添加一些内容来检测运行/序列到我的程序中。运行是一系列相邻的重复值。所以该程序的目标是创建一个包含20个数字的字符串(在1-6范围内)并检测运行周围的运行和put(),例如1 2(5 5)3 1 2 4 3(2 2 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");
}
}
答案 0 :(得分:0)
您想要执行以下操作:
在for循环中
当然,开始一个序列意味着你必须添加一个起始括号,同时结束一个你添加结束括号的序列。
示例:
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);
}
答案 1 :(得分:-1)
尽可能原始地开始。你怎么在阵列中找到跑步?你查看第一个数字并将其与第二个数字进行比较,如果它匹配你的运行已经开始,那么你需要将它与第三个比较...如果它不匹配你开始查看第二个数字。 我会使用StringBuilder添加“(”“)”符号,并可能在最后解析结果String以找到最长的运行。或者你可以将“记录运行”保存在另一个变量中。