字符串形如 "00??00", "0?00?0", "0??00?", 6位定长,'?' 数量和位置都不确定。
如何将所有的 '?' 都替换成0~9 并输出?
例如
输入:"0?00?0",
输出:"000000", "000010"..."000090", "010000"..."010090"..."090090",
即 第一个为0,第二个从0增加到9;然后第一个为1,第二个从0增加到9....; 第一个为9,第二个从0增加到9。
Java 新手,请问这样的代码如何实现?
字符串形如 "00??00", "0?00?0", "0??00?", 6位定长,'?' 数量和位置都不确定。
如何将所有的 '?' 都替换成0~9 并输出?
例如
输入:"0?00?0",
输出:"000000", "000010"..."000090", "010000"..."010090"..."090090",
即 第一个为0,第二个从0增加到9;然后第一个为1,第二个从0增加到9....; 第一个为9,第二个从0增加到9。
Java 新手,请问这样的代码如何实现?
楼主自己看看吧,只实现了部分累加,工作原因,不能全部实现了,逻辑上没有问题了,剩下的交给你了,原创!
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("?0?0?0");
List<Integer> numList = new ArrayList<Integer>();
while (true) {
int num = str.indexOf("?");
if (num == -1) {
break;
}
numList.add(num);
str = str.replace(num, num + 1, "0");
}
int j = 0;
for (int i = numList.size() - 1; i >= 0; i--) {
for (; j <= 9; j++) {
str = str.replace(numList.get(i), numList.get(i) + 1, "" + j);
System.out.println(str);
if (j == 9) {
str = str.replace(numList.get(i), numList.get(i) + 1, "" + 0);
j=1;
break;
}
}
}
}
}