Java 将相似的数字分组到括号中
我最近进入了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++){
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之间的差异。一个计算值,另一个更改程序的状态。您需要在循环表达式中更改状态,并在主体中计算值。