Java 将相似的数字分组到括号中

Java 将相似的数字分组到括号中,java,Java,我最近进入了java,我需要一个基本程序的帮助: public static void main(String[] args) { Random gen = new Random(); int roll = gen.nextInt(6) + 1; int[] array = new int[20]; // Replacing all the numbers of the array to random ones for (int i=0; i<20; i++){

我最近进入了java,我需要一个基本程序的帮助:

public static void main(String[] args) {
Random gen = new Random();
int roll = gen.nextInt(6) + 1;
    int[] array = new int[20];
    // Replacing all the numbers of the array to random ones
    for (int i=0; i<20; i++){
        roll = gen.nextInt(6) + 1;
        array[i] = roll;
    }
    // Bracketing all repeating numbers
    for (int i=0; i<19; i++){
        if (array[i] == array[i++]){
            System.out.print("(");
        }
        System.out.print(array[i]);
        if (array[i] == array[i--]){
            System.out.print(")");
        }
      }
    }
  }
该代码所做的只是随机取模辊,并将所有相同的数字括起来:

1366522226671

但是,该代码所做的只是将所有数字括起来,而不是将相同的数字括起来:

1366522226671


我做错了什么?

您的代码只检查数组[I]中索引编号前后的数字

您可以在第一个循环中创建第二个循环,对数组中的所有数字进行迭代以检查是否匹配

如果您这样做,您将需要使用其他机制跟踪匹配的号码。立即打印出一个括号,就像您当前正在做的那样,这对于内部循环是有问题的


一个简单的考虑方法是另一个数组,它跟踪是否有匹配。

如果你最近进入java,尝试避免I+和++i在方括号内。您可以使用一个布尔变量来解决此问题,该变量指示是否已经有一个括号打开

生成随机数后,请尝试以下操作:

    boolean openBracket=false;
    for (int i=0; i<array.length-1; i++){
        if (array[i] == array[i+1] && !openBracket){
            System.out.print("(");
            openBracket=true;
        }
        System.out.print(array[i]);
        if(array[i] != array[i+1] && openBracket){
            System.out.print(")");
            openBracket=false;
        }
      }

查找i++和i+1之间的差异。一个计算值,另一个更改程序的状态。您需要在循环表达式中更改状态,并在主体中计算值。