站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于getText()与equals()的问题

关于getText()与equals()的问题

摘要: 关于getText()与equals()的问题


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写的,哪个大虾知道为什么?就告诉俺吧,谢谢阿。



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


不是楼上说的那样,你先自己测一下,这样

System.out.println("tf.getText()=====>>>"+tf.getText());
System.out.println("jie guo=====>>>"+ "15".equals(tf.getText()));
如果你测不出来的话把这两个log贴出来我给你看看


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



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


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


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


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

String a="aaa";
String b="aaa";
a==b false
a.equal(b) true



代码不全。。看起不舒服。

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



楼主参考以下程序
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("窗口");}
}


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


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个字符长。


顶上,看上去的小问题,这么深奥啊...学习中..


谢谢大家,我去试一下。


这样写两者比较的是内存的地址,String x..与String y..是两个对象(String一但初始化就不可改了),在内存中开辟的是两个空间,地址并不相同,所以返回false

解决的办法大家在上面已经说了 ,好好借鉴下,俺就不重复了


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


我今天测试了大家提供的方法,比较了上面那段完整的代码,发现导致这个问题的竟然只是在实例化文本框时加了几个空格。麻烦大家了,不好意思。这个回答问题的分怎么才能加,小弟初来乍到,不懂,请指教。
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();
}
}


点击你问题后面的“管理”进去输入密码给分即可。


↑返回目录
前一篇: 对于servlet继承HttpServlet的疑问~~~
后一篇: 高分帖:一个2G的文本文件,如何实现所有内容的完全颠倒?