如何向此阵列添加运行?

时间:2018-03-28 20:33:01

标签: java arrays

我试图添加一些内容来检测运行/序列到我的程序中。运行是一系列相邻的重复值。所以该程序的目标是创建一个包含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");         
    }     
}

2 个答案:

答案 0 :(得分:0)

您想要执行以下操作:

  • 标记序列是否已开始
  • for循环,遍历数字数组

在for循环中

  1. 检查数组中的下一个数字是否等于当前
  2. 如果相同,请启动序列
  3. 将当前号码添加到您的输出
  4. 检查数组中的下一个数字是否等于当前
  5. 如果相同,且序列正在进行中,则结束 序列
  6. 重复
  7. 当然,开始一个序列意味着你必须添加一个起始括号,同时结束一个你添加结束括号的序列。

    示例:

    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以找到最长的运行。或者你可以将“记录运行”保存在另一个变量中。