在下面的代码中没有正确完成字符串匹配。两个值相同但相应的操作都没有执行。任何人都可以帮我解决这个问题吗?提前谢谢!
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.JFrame;
public class NewJFramefin extends javax.swing.JFrame implements ActionListener
{
public NewJFramefin()
{
initComponents();
add(jl1);
add(jf1);
jb1.setActionCommand("OK");
jb1.addActionListener(this);
add(jb1);
jb2.setActionCommand("CANCEL");
jb2.addActionListener(this);
add(jb2);
jb3.addActionListener(this);
add(jb3);
}
public void closewindow()
{
System.exit(1);
}
public void actionPerformed(ActionEvent e)
{
String find=jf1.getText();
String ev=e.getActionCommand();
String check;
String str="jdbc:odbc:dsn1";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(str);
Statement s=con.createStatement();
s.execute("select * from Table1");
ResultSet res=s.getResultSet();
if(res!=null)
{
while(res.next())
{
check=res.getString(1);
System.out.println("STRING FROM DB:"+check + find);
if(check==find)
{
System.out.println("MEANING:"+res.getString(2));
}
if(ev.equalsIgnoreCase("OK") &&(find.equalsIgnoreCase(check)))
{
jf2.setText(res.getString(2));
add(jf2);
}
else if(ev.equalsIgnoreCase("CANCEL"))
{
jf2.setText(" cancelled ");
add(jf2);
jf1.setText(" ");
add(jf1);
}
else if(ev.equalsIgnoreCase("EXIT"))
{
closewindow();
}
}
}
}
catch(Exception ew)
{
}
}
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFramefin().setVisible(true);
}
});
}
}
感谢您的回复朋友..以上代码中的确切问题是我们必须修剪n比较,否则应该在构造函数中包含代码“ jf1.setText(null); ”
答案 0 :(得分:4)
问题可能是
if(check==find)
应该是
if(check.equals(find))
==不在Java中进行字符串比较;它检查对象是否相同(同一个对象)
答案 1 :(得分:0)
永远不要将String实例与==
进行比较。使用string1.equals(String2)
。 ==
检查两个变量是否包含相同的引用,而不是两个字符串包含相同的字符。
答案 2 :(得分:0)
操作A == B
用于识别两个对象引用都指向同一个对象。
操作A.equals(B)
用于标识两个对象引用都包含相同的值。
由于您的字符串是独立构造的(一个是在您编写的代码中构造的,另一个是在JDBC层中构造的),因此它们不能引用相同的对象,您需要使用equals运算符。
答案 3 :(得分:0)
正如Hunter McMillen所说,你不应该使用==
来比较字符串。在两个字符串上使用==
只有在它们是相同的String对象时才会返回true。另一方面,如果两个字符串具有相同的内容,equals()
方法将返回true。