我有一个原始号码(LoadG1)。然后,我生成此数字的改编版本,如下面的代码所示。注意:generateG1是一个Random

int loadG1 = generateG1.nextInt(89999) + 10000;
for (int allrbA = 0; allrbA < 4; allrbA++) {

StringBuilder charLoadG1 = new StringBuilder(String.valueOf(loadG1));
StringBuilder randomLoadG1 = new StringBuilder();
while(charLoadG1.length() != 0) {
int index = generateG1.nextInt(charLoadG1.length());
char c = charLoadG1.charAt(index);
randomLoadG1.append(c);
charLoadG1.deleteCharAt(index);
}

}

 if(Integer.valueof(String.valueof(randomLoadG1))==loadG1) {
for (int allrbA = 0; allrbA < 4; allrbA++) {

StringBuilder charLoadG1 = new   StringBuilder(String.valueOf(loadG1));
StringBuilder randomLoadG1 = new StringBuilder();
while(charLoadG1.length() != 0) {
int index = generateG1.nextInt(charLoadG1.length());
char c = charLoadG1.charAt(index);
randomLoadG1.append(c);
charLoadG1.deleteCharAt(index);
}


}

这成功地重新排列了loadG1中的数字,这被视为randomLoadG1的值。问题是,我不希望randomLoadG1永远是==来加载G1。如果将其重新排列为完全相同的顺序,则会发生这种情况。我尝试使用while循环来解决此问题,但只有在生成相同的randomLoadG1时,它才会使我的应用程序崩溃。

谁能帮助您解释如何使randomLoadG1(原始loadG1的改组版本)永远不会具有与loadG1相同的值?非常感谢任何提交的代码,非常感谢。

最佳答案

这是一个伪代码实现:

number1 = random number
do {
    number2 = random_shuffle(number1);
} while (number1 == number2)


...其中random_shuffle(number1)代表您现有的随机播放算法。

现在,我不明白为什么您不能重构您现有的实现以遵循这种模式,但是它应该是简单的Java编程。如果您的代码崩溃了,那么您应该使用调试器找出原因。

07-26 02:56