问题一: String 是对象.对象之间比较用==的话是引用比较.用.equals()才是对的. 既然楼主定义了JTextField got3=new JTextField();那么got3就不为null所有永远为false问题二: String 是个比较特殊的对象 可以这样定义 String a = "i am happy"; String b = "i am happy"; 那么 a == b 返回 true String a = new String("i am happy"); String b = new String("i am happy"); 那么 a == b 返回 false
public String getText()Returns the text contained in this TextComponent. If the underlying document is null, will give a NullPointerException. Returns: the text Throws: NullPointerException - if the document is null See Also: setText(java.lang.String)
if (got3.getText().Length()>0) { ... }说明:getText如果发现底下的文本是null,会抛出NullPointerException,而不是返回null。""的长度为0。对我们文本控件的使用者来说,可以认为它返回的字符串永远不是null。所以一般用""或者length()方法判断用户是否有输入,而不是用null跟它比。"请问java在搞什么飞机?"不是Java搞飞机,是楼主没有理解是怎么回事。
我把got3放在JPane中,JPane又放在Container中。程序没有任何语法错误和算法错误。
也是本来想判断是否有输入,但死活不行。
最后还是通过javascript来实现的,
真是郁闷~~!
.............................
试试看,也许.......
got3.getText()==""中后者没定义所以为真,got3.getText().equals("")一样
String name;
JTextField nameField = new JTextField();
name=nameField.getText();
if(!name.equals(""))
{}
else
{}
String 是对象.对象之间比较用==的话是引用比较.用.equals()才是对的.
既然楼主定义了JTextField got3=new JTextField();那么got3就不为null所有永远为false问题二:
String 是个比较特殊的对象
可以这样定义
String a = "i am happy";
String b = "i am happy";
那么 a == b 返回 true
String a = new String("i am happy");
String b = new String("i am happy");
那么 a == b 返回 false
所以,用xxx.getText().equals("") 来判断用户是否有输入是完全可以的
.......
if(got3.getText()=="")//永远为真
或if(got3.getText().equals(""))//永远为真
上面两句如何理解?!
the text
Throws:
NullPointerException - if the document is null
See Also:
setText(java.lang.String)
给个exampleimport java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class TextFieldTest{
JFrame frame=new JFrame("TextField Test");
Container c=frame.getContentPane();
JTextField tf=new JTextField();
JButton button=new JButton("ok");
public TextFieldTest(){
c.add(tf);
c.add(button,BorderLayout.SOUTH);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(tf.getText().trim().equals("")){
JOptionPane.showMessageDialog(c,"nothing input");
}else{
JOptionPane.showMessageDialog(c,tf.getText());
}
}
});
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setLocation(300,300);
frame.show();
}
public static void main(String[] args){
new TextFieldTest();
}
}
或if(got3.getText().equals(""))//永远为真
上面两句如何理解?用户没有输入任何字符的时候,getText返回"",所以got3.getText().equals("")为真。
因为Java中字符串是不可变的,且getText内部机制会调用String对象的intern方法,所以同样内容的字符串会指向同一个字符串实例,因此got3.getText()==""也为真。
用==或许会有错误的!
if(got3.getText().equals(""))//永远为真
不管在输入与不输入下都为真,这是为什么?
got3.setText(null);
if(got3.getText()==null)
永远为假。后来说
JTextField got3=new JTextField();
got3.setText(null);
if(got3.getText()=="")
也不行,if语句永远也得不到真!再后来
用if(got3.getText().equals(""))永远为真。==========================================================================我真的不知道楼主转贴这段话之前有没有好好看前面是怎么说的,有没有自己想想道理或者做过试验。我来解释一下为什么在原贴中if(got3.getText().equals(""))永远得到真值:原来的代码是这样的:...
JTextField got3=new JTextField(); // <1>
got3.setText(null); // <2>
if(got3.getText().equals("")) // <3>
...执行到<2>时,setText(null)把原有的内容清空
执行到<3>时,自然got3的文本是空的,自然getText返回"",自然永远是真。还有什么想不通的么?==========================================================================if(got3.getText().equals(""))//永远为真
不管在输入与不输入下都为真,这是为什么?不为什么,“不管在输入与不输入下都为真”这句话本身就是假命题。不信你自己做实验。
JTextField nameInput = new JTextField();后来有一个事件(比如按钮被按下)触发一段代码,在这段代码中:>>如果用户确实有输入,那么
nameInput.getText()==null //为假
nameInput.getText().equals("") //也为假>>如果用户没有输入,那么
nameInput.getText()==null //仍然为假
nameInput.getText().equals("") //为真[结论]
getText()不管用户有没有输入,都不会返回null值。
用户有输入时getText().eqauls("")为假;没有输入时返回"",故getText().equals("")为真。[额外的说明]
setText(null),即传递一个null参数给setText方法,实际的效果是清空文本,而不是把底层的文档对象null掉。另外在取值时,考虑用trim()去掉无用的空格。[可以考虑的实现方法]
为判断是否有用户输入,有如下途径,为真时说明没有有效的输入:
getText().trim().euqals("")
getText().trim().length()==0
getText().trim()=="" // 最后一个方法也可行是因为string对象默认是intern的,但为了避免带来不必要的混淆,不推荐这样判断。
if(got3.getText().equals(""))//永远为真
大家不要把我想得那么菜好吗,怎么说我也是高级程序员,目前刚刚转到java编程,由于它在实现机制上与VC有较大差别,所以我要一段时间才能适应,而且我还是个新手,我的意思只有Hodex(小何才露尖尖角) 老师明白,其余的人总是在说,因为没有输入,所以getText返回"",所以got3.getText().equals("")为真什么的,注意我说的是永远!!!
也就是说用户输入了字符的情况下,got3.getText().equals("")还是为真!!!
希望你们调试一下再回答好吗?还有 noding2001(red) 老师也说了,他也遇到这个问题,说明我不是乱说的!
Hodex(小何才露尖尖角) 老师的例子我试了,真的行,所以这种方法我会记住的,现在由于刚看java,还没看到trim()方法的运用,还请哪位高手说一下!谢谢。
另外,不要叫俺“老师”,俺对这个词有点反感,因为俺是所有老师的眼中盯,嘻嘻
trim的意思 sean_gao(大胃) 已经指出过:去掉无用的空格俺同意sean_gao(大胃)的看法
Quick pick框,则由计算机为你下注,选中Personal,则用户自己下注,我要达到的目的就是当用户选中Personal时,在点Play后,判断一下6个输入框中是否都输入了数字,只要有一个没有输入就直接返回,因为没有人下空的六合彩。
这只是我学习中的练习题,不要管它有没有用。
if(got3.getText().equals(""))//永远为真
这句,会编程的人看了都会不理解,所以我才说java在搞什么飞机的,其实只是一句气话,我从来没有怀疑过java这种全世界最流行和最有前途的语言!
刚从VC转到java,第一感觉就是java功能太强大了!以后还向大家学习。