public void actionPerformed(ActionEvent e){
String x=tf.getText(); //文本框输入15.
String y="15";
l3.setText(""+x.equals(y));//两个字符串比较 为什么两者比较结果是False
if(x.equals(y))
l2.setText("正确");
else
l2.setText("不正确");
}
这段小程序是用JAVA写的,哪个大虾知道为什么?就告诉俺吧,谢谢阿。 

解决方案 »

  1.   

    先将这里的类型强制转换成(String)tf.getText()试试。
      

  2.   

    不是楼上说的那样,你先自己测一下,这样System.out.println("tf.getText()=====>>>"+tf.getText());
    System.out.println("jie guo=====>>>"+ "15".equals(tf.getText()));
    如果你测不出来的话把这两个log贴出来我给你看看
      

  3.   

    String是一个特殊的类,不用实例化就可以得到对象,对象在堆里面,变量在栈里面,地址不同,所以是false
      

  4.   

    如果想要返回的是true,就要重写父类object的equals方法。
      

  5.   

    看看x.getBytes()和y.getBytes()是否一致?
      

  6.   

    什么吗?这算什么问题?x.equals(y)就是true啊.
    你自己再好好找找,是不是其他地方的问题.
    你不把所有的代码拿上来看看,我们怎么清楚你的问题到底出在哪?????
      

  7.   

    String是一个特殊的类,不用实例化就可以得到对象,对象在堆里面,变量在栈里面,地址不同,所以是false
    ------------------------------------------------------------------------------------
    绝对胡扯害人String a="aaa";
    String b="aaa";
    a==b false
    a.equal(b) true
      

  8.   

    代码不全。。看起不舒服。——————————
    楼上滴,纠正下`
    String a="aaa";
    String b="aaa";
    a==b true
    String 常量池呢。。简单说下:
    在内存中分配次空间后,如果再用"="号就会在常量池里比较是否有相同值,没有的话才重新创造个新对象分配内存空间。
      

  9.   

    楼主参考以下程序
    import java.awt.*;
    import java.awt.event.*;
    class Myframe extends Frame implements ActionListener
    {TextField text1,text2;
     
    Myframe(String s)
    {super(s);
    setLayout(new FlowLayout());
    text1=new TextField(10);
    text2=new TextField(10);
      
    text1.addActionListener(this);
      add(text1);
    add(text2);
    text2.setEditable(false);
        setBounds(20,30,300,200);
    setVisible(true);
    validate();
    addWindowListener(new WindowAdapter()
    {public void windowClosing(WindowEvent e)
    {System.exit(0);}
    });
    }
    public void actionPerformed(ActionEvent e)
    {  String x=text1.getText();
    String str="15";
    if(x.equals(str))
    text2.setText("正确");
    else text2.setText("不正确");
    }}
    class Test
    {public static void main(String args[]) {new Myframe("窗口");}
    }
      

  10.   

    楼上的兄弟,你用的是不是1.5的JDK呀!
    addWindowListener(new WindowAdapter()
    {public void windowClosing(WindowEvent e)
    {System.exit(0);}
    });这段代码是什么意思?
    setEditable();这个方法是干什么用的.
    text1=new TextField(10);这个10是什么意思.
    本人才疏学浅,望各位指教,Thank you!
      

  11.   

    1.我用的是1.4的。
    2.addWindowListener(new WindowAdapter()
    {public void windowClosing(WindowEvent e)
    {System.exit(0);}
    });这段代码是什么意思?
    这段是实现窗口事件的接口代码,其中
    {public void windowClosing(WindowEvent e)
    {System.exit(0);}
    }
    是一个匿名类。
    3.setEditable();这个方法是干什么用的.
     使设置文本框不可编辑的。
    4.text1=new TextField(10);这个10是什么意思.
     设置文本框的长度为10个字符长。
      

  12.   

    这样写两者比较的是内存的地址,String x..与String y..是两个对象(String一但初始化就不可改了),在内存中开辟的是两个空间,地址并不相同,所以返回false解决的办法大家在上面已经说了 ,好好借鉴下,俺就不重复了
      

  13.   

    我怎么记得
    str1="a";
    atr2=lable.text;(值是"a");
    str1==str2不一定相等,
    str1.equals(str2)一定相等啊
      

  14.   

    我今天测试了大家提供的方法,比较了上面那段完整的代码,发现导致这个问题的竟然只是在实例化文本框时加了几个空格。麻烦大家了,不好意思。这个回答问题的分怎么才能加,小弟初来乍到,不懂,请指教。
    import java.awt.*;
    import java.awt.event.*;
    public class CountFrame extends Frame implements ActionListener{
    Frame f;
    Label l1,l2,l3;
    Button b;
    TextField tf;

    public CountFrame(){
    f=new Frame("加法判断");
    l1=new Label("6+9=");
    l2=new Label("     ");
    l3=new Label("  ");
    b=new Button("OK");
    tf=new TextField("  ");//就是这几个空格,它也算作字符串的一部分,去掉就正常了。

    f.setLayout(new GridLayout());
    f.add(l1);f.add(tf);
    f.add(l2);f.add(b);f.add(l3);
    b.addActionListener(this);
    f.setSize(300,300);
    f.setVisible(true);
    validate();
    f.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }
    public void actionPerformed(ActionEvent e){
    String x=tf.getText(); 
    String y="15";
    l3.setText(""+x.equals(y));
    if(x.equals(y))
    l2.setText("正确");
    else
    l2.setText("不正确");
    }
    public static void main(String args[]){
    new CountFrame();
    }
    }