我将如何将运行添加到此数组中



我正在尝试将某些内容添加到我的程序中。运行是相邻重复值的序列。因此,该程序的目的是创建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

  1. 检查数组中的下一个数字是否等于当前
  2. 如果是相同的,请启动序列
  3. 将当前号码添加到您的输出
  4. 检查数组中的下一个数字是否等于当前
  5. 如果它是不是 并且正在进行序列,请结束序列
  6. 重复

当然,启动序列意味着您必须添加一个启动括号,而结束序列时要添加结束括号。

示例:

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添加"("(符号,并可能在最后解析结果字符串以找到最长的运行。或者您可以将"记录运行"保存在另一个变量中。

最新更新