gpt4 book ai didi

java - 如何检查两个整数是否相邻。 1,4,7不能在一起

转载 作者:行者123 更新时间:2023-11-30 08:43:25 26 4
gpt4 key购买 nike

我的代码是一个简单的 int 数组,每次运行代码时都会随机打乱。我正在努力做到这一点,以便在打乱数字 (1-10) 时,如果数字 1、4 或 7 彼此相邻,那么它将重新打乱。这是我当前的代码:

int[] anArray1 = {1,2,3,4,5,6,7,8,9,10};

shuffleArray(anArray1);

if (anArray1[0] + ) {
for (int k = 0; k < anArray1.length; k++) {
System.out.println(anArray1[k]);
}
}

static void shuffleArray(int[] ar) {
Random rnd = ThreadLocalRandom.current();
for (int i = ar.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
int a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
}

任何建议将不胜感激:)

最佳答案

以下代码在循环中调用 shuffleArray(),然后遍历数组以检查 (1, 4, 7) 中的相邻值。如果找到,那么它将继续洗牌。

int counter;
// you can add or remove numbers to check for overlapping as you need
Set<Integer> overlapNumbers = new HashSet<Integer>(Arrays.asList(1, 4, 7));

do {
shuffleArray(anArray1);
counter = 0;
for (int i=0; i < anArray1.length; ++i) {
if (overlapNumbers.contains(anArray[i])) {
++counter;
// adjacent overlapping numbers
if (counter > 1) {
break;
}
}
else {
counter = 0;
}
}
} while (counter > 1);

System.out.println("Here is the array we retained:");
System.out.println(Arrays.toString(anArray1));

关于java - 如何检查两个整数是否相邻。 1,4,7不能在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com