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