日期:2014-05-20  浏览次数:20766 次

看似简单却搞不定的问题。。。
[code=Java][/code]
public static int Search(String str){
String[] DIC=readIn("..\\data\\chineseDic.txt");
String[] temp=new String[8];
for(int i=0;i<length;i++){
temp=DIC[i].toString().split(",", -2);
DIC[i]=temp[0];}
for(int i=0;i<DIC.length;i++)
if(str==DIC[i])
return i;
return -1;
}


为什么这个方法(入口是str,要找的词)总是没法搜到..\\data\\chineseDic.txt词典里的词汇,其中DIC[i]可以正常打印所有词典中的值条目(中文的),编码是GBK。

------解决方案--------------------
if(str==DIC[i])
return i;
return -1;
}

这是什么? String比较不能用== 用 if(DIC[i].equals(str))
------解决方案--------------------
楼上的,楼主意思
if(str==DIC[i]){
return i;
}else{
return -1;
}

像一楼说的,字符串比较用equals方法,不能用==

楼主且这么改下,试试是否可以。

------解决方案--------------------
你这个程序,直接用循环来进行查找,性能只怕低的要吐血吧。。。

建议改为:
HashMap<String, Integer> DIC = readIn("..\\data\\chineseDic.txt");
重新实现下readIn()函数,让其返回一个 HashMap,不要用数组了,查找太不方便了。
Key用单词,Value用行位置。


那么程序可以简化为:
public static int Search(String str){
HashMap<String, Integer> DIC = readIn("..\\data\\chineseDic.txt"); // 这个最好只做一次;
Integer pos = DIC.get(str);
return (pos==null) ? -1 : pos;
}