Java 代码来构建所有可能的字符串,并找到一个特定的字符串,但该字符串无法按预期工作

Java 代码来构建所有可能的字符串,并找到一个特定的字符串,但该字符串无法按预期工作,java,string,algorithm,Java,String,Algorithm,我试图解决的任务之一是构建所有可能的字母和空格组合。在构建组合时,我试图找到一个特定的字符串。我认为我很好地实现了这个解决方案,但我的测试告诉我并非如此 我从一个数组中获取字符,在for循环中,我从中构建一个字符串,然后打印解决方案。当我构建了所有的字符组合,比如说1个字符组合,然后我就转到了2个字符组合。我有一个布尔值来检查StringBuilder的内容是否等于我要查找的给定字符串。我检查了,示例字符串确实构建好了,但是布尔值没有改变 public static void main(Stri

我试图解决的任务之一是构建所有可能的字母和空格组合。在构建组合时,我试图找到一个特定的字符串。我认为我很好地实现了这个解决方案,但我的测试告诉我并非如此

我从一个数组中获取字符,在for循环中,我从中构建一个字符串,然后打印解决方案。当我构建了所有的字符组合,比如说1个字符组合,然后我就转到了2个字符组合。我有一个布尔值来检查StringBuilder的内容是否等于我要查找的给定字符串。我检查了,示例字符串确实构建好了,但是布尔值没有改变

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然后请接受答案