Java 如何在单词列表中搜索单词?

Java 如何在单词列表中搜索单词?,java,string,Java,String,今天我学习用java编写代码拼字游戏。我在列表中强调搜索词,我只想搜索它(垂直、水平),但不想搜索对角线。我的代码没有给我错误和结果。你能帮我刷新一下吗 public class WordPuzzle { private final String puzzleString[][]; private final int rowNumber; public WordPuzzle(String[][] puzzleString,int rowNumber){

今天我学习用java编写代码拼字游戏。我在列表中强调搜索词,我只想搜索它(垂直、水平),但不想搜索对角线。我的代码没有给我错误和结果。你能帮我刷新一下吗

public class WordPuzzle {
    private final String puzzleString[][];
    private final int rowNumber;

    public WordPuzzle(String[][] puzzleString,int rowNumber){
        this.puzzleString=puzzleString;
        this.rowNumber=rowNumber;
    }
    public void showPuzzle(){

        for(int i=0;i<rowNumber;i++){
            for(int j=0;j<rowNumber;j++){
                System.out.print(" "+puzzleString[i][j]);
            }
            System.out.println();
        }
    }

    public Set<String> searchWord(Set<String> word){
        Set<String> foundWord=new HashSet<String>();
        int minimumWordLength=findMinimumWordLenght(word);
        Set<String>compWord=CompatitableWord(minimumWordLength);
        for(String w:word){
            for(String posibleWord:compWord){
                if(posibleWord.contains(w) || posibleWord.contains(new StringBuffer(w).reverse())){
                    foundWord.add(w);
                    break;
                }
            }
        }
        return foundWord;
    }
    private int findMinimumWordLenght(Set<String> wordLength){
        int minimumLenght=Integer.MAX_VALUE;
        for(String w:wordLength){
            if(w.length()<minimumLenght){
                minimumLenght=w.length();
            }
        }
        return minimumLenght;
    }
    private Set<String> CompatitableWord(int minimumWordLength){
        Set<String>compWord=new LinkedHashSet<String>();
        int puzzleLength=puzzleString.length;
        if(puzzleLength>=minimumWordLength){

            for(int i=0;i<puzzleLength;i++){
                if(puzzleString[i].length>=minimumWordLength){
                    compWord.add(new String(puzzleString[i].toString()));
                }
            }
            for(int i=0;i<puzzleLength;i++){
                StringBuffer tmp=new StringBuffer();
                for(int j=0;j<puzzleLength;j++){
                    tmp=tmp.append(puzzleString[j][i]);
                }
                compWord.add(new String(tmp));
            }
        }
        return compWord;
    }
    public static void main(String[] args){
        String[][] a={{"g","y","r","a","r","b","i","l","e"},
                      {"u","a","a","n","c","h","o","r","i"},
                      {"i","b","y","d","v","e","x","t","r"},
                      {"t","z","c","h","y","n","e","q","u"},
                      {"a","m","a","n","g","o","d","v","q"},
                      {"r","n","i","h","p","l","o","d","l"},
                      {"f","o","r","e","s","t","u","d","y"},
                      {"j","d","l","w","a","r","c","h","u"},
                      {"h","a","v","g","h","y","e","t","y"}
                     };

        WordPuzzle pn=new WordPuzzle(a,9);
        pn.showPuzzle();
        Set<String> str=new HashSet<String>();
        str.add("library");
        Set<String>wordFound=pn.searchWord(str);
        for(String w:wordFound){
             System.out.println("Found"+pn.searchWord(str));
        }
    }
}
公共类字谜{
私有最终字符串拼图字符串[];
私有最终整数行数;
公共字谜(字符串[][]字谜字符串,整数行数){
this.puzzstring=puzzstring;
this.rowNumber=rowNumber;
}
公共空间{

对于(int i=0;i您可以重写您的程序,因为它非常复杂且困难。首先,将字符串替换为字符:您应该有字符矩阵,
char[][]mat
。其次,将所有行和列保存到
String

String[] rows = ... // use new String(mat[i]) 
String[] columns = ... // transform matrix and see solution for rows
在此之后,使用
行[i].indexOf
列[i].indexOf

此外,还可以使用
行[i].reverse().indexOf
列[i].reverse().indexOf


对不起,我的英语很差,上次我检查了,你帮我刷新它不是一个问题。你能编辑你的帖子,给出一个更具体的问题,以便我们能帮助你吗?哦,对不起,我的意思是你能帮我找到上面代码中的错误吗?因为我运行时没有错误和结果。结果应该返回一个找到的字符串。@nari puzzle string[][]是多维数组。现在,在CompatibleWordLength(int minimumWordLength)中,您编写了compWord.add(新字符串(puzzleString[i].toString());即一维数组。请检查它。