有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

未找到java Trie置换

我在使用Java中的Trie进行字谜解算时遇到了一个问题。下面的代码是针对Android的,对于给定和传入的字母,没有给出任何排列结果。但是,如果我在Java桌面应用程序中实现相同的代码,它会为我返回正确的结果。我很确定这是个简单的问题,我就是找不到

桌面版本的代码:

static String myWord;
    static String myLetters = "";
    static char[] myChars;
    static TrieNode myNode = new TrieNode();
    static TrieNode currentNode;
    static ArrayList<String> availableWords = new ArrayList<String>();

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        myLetters = s.next();

        readWords();
        getPermutations();
    }
    public static void getPermutations(){
        currentNode = myNode;
        for(int x = 0; x < myLetters.length(); x++){
            if(currentNode.children[myLetters.charAt(x) - 'a'] != null){
                availableWords.addAll(currentNode.getWords());
                currentNode = currentNode.children[myLetters.charAt(x) - 'a'];
                System.out.println("x: " + x + " " + currentNode.getWords() + "" + myLetters.charAt(x));
            }
        }   
        System.out.println(availableWords);
    }

Desktop Output:
aelpp  //(user input from scanner)
x: 0 []a
x: 1 [ae]e
x: 2 [ale, lea]l
x: 3 [leap, pale, peal, plea]p
x: 4 [appel, apple, pepla]p
[ae, ale, lea, leap, pale, peal, plea] 

Android代码:

static String myWord;
    static char[] myChars;
    static TrieNode myNode = new TrieNode();
    static TrieNode currentNode;
    static ArrayList<String> availableWords = new ArrayList<String>();

    public static void getPermutations(String passedInLetters){
        currentNode = myNode;
        Log.i("TRIE:" , passedInLetters);
        for(int x = 0; x < passedInLetters.length(); x++){
            if(currentNode.children[passedInLetters.charAt(x) - 'a'] != null){
                availableWords.addAll(currentNode.getWords());
                Log.i("TRIE:" , "x: " + x + " " + currentNode.getWords());
                currentNode = currentNode.children[passedInLetters.charAt(x) - 'a'];
            }
        }
        Log.i("TRIE:", availableWords.toString());
    }

Android日志输出:

03-15 22:45:11.670: I/TRIE:(4286): aelpp
03-15 22:45:11.670: I/TRIE:(4286): x: 0 []
03-15 22:45:11.670: I/TRIE:(4286): x: 1 []
03-15 22:45:11.670: I/TRIE:(4286): x: 2 []
03-15 22:45:11.670: I/TRIE:(4286): x: 3 []
03-15 22:45:11.670: I/TRIE:(4286): x: 4 []
03-15 22:45:11.670: I/TRIE:(4286): []

如果需要,以下是完整的课程:

桌面:http://pastie.org/3604515 安卓:http://pastie.org/3604513

我一直在研究我的其他一些来源的这篇文章:java string permutations and combinations lookup

谢谢

编辑:

在if语句中需要切换以下行:

currentNode = currentNode.children[passedInLetters.charAt(x) - 'a'];
                availableWords.addAll(currentNode.getWords());

共 (0) 个答案