Java 代码来构建所有可能的字符串,并找到一个特定的字符串,但该字符串无法按预期工作
我试图解决的任务之一是构建所有可能的字母和空格组合。在构建组合时,我试图找到一个特定的字符串。我认为我很好地实现了这个解决方案,但我的测试告诉我并非如此 我从一个数组中获取字符,在for循环中,我从中构建一个字符串,然后打印解决方案。当我构建了所有的字符组合,比如说1个字符组合,然后我就转到了2个字符组合。我有一个布尔值来检查StringBuilder的内容是否等于我要查找的给定字符串。我检查了,示例字符串确实构建好了,但是布尔值没有改变Java 代码来构建所有可能的字符串,并找到一个特定的字符串,但该字符串无法按预期工作,java,string,algorithm,Java,String,Algorithm,我试图解决的任务之一是构建所有可能的字母和空格组合。在构建组合时,我试图找到一个特定的字符串。我认为我很好地实现了这个解决方案,但我的测试告诉我并非如此 我从一个数组中获取字符,在for循环中,我从中构建一个字符串,然后打印解决方案。当我构建了所有的字符组合,比如说1个字符组合,然后我就转到了2个字符组合。我有一个布尔值来检查StringBuilder的内容是否等于我要查找的给定字符串。我检查了,示例字符串确实构建好了,但是布尔值没有改变 public static void main(Stri
public static void main(String[] args) throws InterruptedException {
findString("rxc");
}
public static void findString(String string) {
boolean isFound = false;
String allChars = "abcdefghijklmnopqrstuvwxyz ";
char[] sequence = allChars.toCharArray();
int lengthOfExpression = 3;
//builder contains 3 whitespaces at the beginning
StringBuilder builder = new StringBuilder(" ");
int[] pos = new int[lengthOfExpression];
int total = (int) Math.pow(allChars.length(), lengthOfExpression);
for (int i = 0; i < total; i++) {
for (int x = 0; x < lengthOfExpression; x++) {
if (pos[x] == sequence.length) {
pos[x] = 0;
if (x + 1 < lengthOfExpression) {
pos[x + 1]++;
}
}
builder.setCharAt(x, sequence[pos[x]]);
}
pos[0]++;
if (builder.toString() == string) {
isFound = true;
}
System.out.println(builder.toString());
}
System.out.println(isFound);
}
预期结果将是最后打印的“真实”。相反,我的结果如下:
//省略了许多行的组合
r
s
T
U
v
W
x
Y
z
false不要将字符串与==进行比较,而是使用.equals;因此,对于您的代码:
将if builder.toString==字符串更改为if builder.toString.equalString两个字符和三个字符的输出是什么样的?可能有人可以帮助更快地完成更多的示例输出。您尝试过调试吗?2字符示例:xy yy zy y az bz cz dz ez fz 3字符示例yrh zrh ash bsh csh dsh esh fsh gsh hsh同样,1和2字符结果后面有空格,所以所有结果都是3个字符长。这个答案有一个标准的副本,不需要在这里发布一个实际的答案,因为它永远不会比副本更好。是的,这解决了问题,谢谢。@Mangos然后请接受答案