我有2个文本文件 . myfile.txt和Person.txt . myfile.txt包含一个短文并且Person.txt包含人名列表 . 现在我正在用netbeans做这个程序 . GUI有2个textarea和一个按钮 . 当我点击该按钮时,myfile.txt的内容将显示在1st textarea中,如果在myfile.txt中找到Person.txt中的任何名称,则第二个textarea应该显示Person . 到目前为止,我可以在1 textarea中显示myfile.txt但无法进行比较 . 这是我现在的代码:private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
int a = 0;
try{
FileInputStream fstream = new FileInputStream("myfile.txt");
// use DataInputStream to read binary NOT text
// DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader( new InputStreamReader(fstream));
String line="";
FileInputStream fstreamCP = new FileInputStream("Person.txt");
// use DataInputStream to read binary NOT text
// DataInputStream inCP = new DataInputStream(fstreamCP);
BufferedReader brCP = new BufferedReader( new InputStreamReader(fstreamCP));
String lineCP = brCP.readLine();
while((line = br.readLine()) != null){
System.out.println();
jTextArea1.append(line);
if (jTextArea1.getText()==(lineCP)){
jTextArea2.append("Person");
}
}
in.close();
}catch(IOException e){
System.out.println("Error while reading file:" + e.getMessage());
}
}
上面的代码没有错误 . 可以读取myfile.txt的内容并将其发送到1st textarea,但无法识别myfile.txt和Person.txt中存在的相同单词 . 我想如果我使用通配符文本过滤器,那么我将能够做到这一点?任何想法或示例代码高度赞赏 . 谢谢 .
3 回答
不要将字符串与
==
进行比较:这将检查两个String变量是否引用完全相同的String对象,这不是您感兴趣的内容 .
而是使用
.equals(...)
或.equalsIgnoreCase(...)
方法 . 这些方法检查两个字符串是否具有相同顺序的相同字符,区分大小写(第一种方法)或不敏感,这是您要检查的内容 .==
被称为relational operators in Java
. 它将检查两个操作数的值是否相等,如果是,则条件变为真 .使用
equals()
或equalsIgnoreCase()
为您的情况....你必须对字符串使用equals(),你不能将它们与=进行比较