【发布时间】:2015-01-01 19:56:28
【问题描述】:
正如标题所述,我一直在考虑创建多个旨在实现一个目的的嵌套循环。将两个生成的随机数在 0-9 之间移动到数组的每个可能位置。
例如,App 生成第一个数字 (fNum) 1 和第二个数字 (sNum) 6。然后它将这些数字移动到包含 ABC 的数组中。但是 firstNum 和 secondNum 还需要尝试所有可能的组合,因此每个循环都需要不同。
-1ABC6
-A1BC6
-AB1C6
-ABC16
-ABC61
-AB6C1
-A6BC1
-6ABC1
-A6B1C
-A61BC
-A16BC
-A1B6C
-A1BC6
等等……
我相信最好的方法是创建一个生成计数器的方法,它会增加我可以调用的数字。
private int getNextNumber(int num) {
if (num == 0) {
return num;
} else {
num++;
}
if (num < 10) {
return num;
} else {
return -1;
}
}
然后我将需要多个嵌套循环...我决定进行多个循环,这些循环将无限循环。
while (j < maxlen) {
//J = 0 and maxlen = length of text so in this case 3 as it is ABC
//Add two numbers and check against answer
while (fNum != -1 || sNum != -1) {
//incrememnt numbers
fNum = getNextNumber(fNum);
System.out.println(fNum);
sNum = getNextNumber(sNum);
System.out.println(fNum);
}
String textIni = "ABC";
int lenOfText = textIni.length();
char[] split = textIni.toCharArray();
for (int i = 0; i < lenOfText; i++) {
//here it will look at the length of the Text and
//try the possible positions it could be at....
//maybe wiser to do a longer loop but I am not too sure
}
}
【问题讨论】:
-
您应该研究递归广告,这看起来可以使用递归解决!
-
你必须存储这些排列吗?如果是这种情况,递归解决方案将是更好的选择。如果您需要对每个排列进行处理而不存储它,请坚持迭代解决方案
-
问题是什么?
-
递归,我已经掌握了这个术语,但是在 Java 方面我仍然是一个菜鸟,好的,谢谢!我会尝试通过使用解决这个问题并反馈。
-
@Tom 嗨,对不起,我刚刚注意到我没有把它放进去的问题,是我如何才能真正通过数组并检查所有可能性,我现在正在尝试学习递归所以我可能会想出一个解决方案。
标签: java arrays loops while-loop nested