如果有些东西很简单,我很抱歉,我很抱歉。Java扫描程序找不到字
我有以下代码:
import java.util.Scanner;
import java.io.File;
import java.util.regex.Pattern;
public class UnJumble
{
String[] ws;
int ind=0;
public static void main(String args[]) throws Exception
{
System.out.println("Enter a jumbled word");
String w = new Scanner(System.in).next();
UnJumble uj = new UnJumble();
uj.ws = new String[uj.fact(w.length())];
uj.makeWords("",w);
int c=1;
Scanner sc = new Scanner(new File("dict.txt"));
for(int i=0; i<uj.ws.length; i++)
{
Pattern pat = Pattern.compile(uj.ws[i].toUpperCase());
if(sc.hasNext(pat))
System.out.println(c+++" : \'"+uj.ws[i]+"\'");
}
System.out.println("Search Completed.");
if(c==1) System.out.println("No word found.");
}
public void makeWords(String p,String s)
{
if(s.length()==0)
ws[ind++] = p;
else
for(int i=0; i<s.length(); i++)
makeWords(p+s.charAt(i),s.substring(0,i)+s.substring(i+1));
}
public int fact(int n)
{
if(n==0) return 1;
else return n*fact(n-1);
}
}
的dict.txt
文件是SOWPODS字典,这是官方拼字字典..
我想在一个混乱的话,它要重新排列检查它是否存在于字典中。如果是,则打印出来。
当我尝试tra
作为输入时,输出表示No word Found.
。 但输出应该有tar
,art
和rat
这两个字。
请告诉我我犯了什么错误。如果我犯了一个非常简单的错误,我很抱歉,因为这是我第一次使用Pattern
。
我应该使用类似',而(sc.hasNext())dictstring + = sc.next()'把我整部字典作为一个字符串? – Hackerdarshi
正如你不想在字里面匹配尝试“(^ | \\ W)”+ uj.ws [i] .toUpperCase()+“(\\ W | $)”正则表达式 – Jan
是不是相同? – Hackerdarshi