Java 为什么';如果这个条件行得通,不是吗?
我创建此代码是为了检查计算器的文本字段是否有任何内容。如果文本字段中存在内容,则应显示Java 为什么';如果这个条件行得通,不是吗?,java,swing,Java,Swing,我创建此代码是为了检查计算器的文本字段是否有任何内容。如果文本字段中存在内容,则应显示“。否则,它应该在文本字段中显示“0”。。问题是if条件的计算结果总是false private void dotActionPerformed(ActionEvent evt){ String dott=display.getText(); if(dott==null) { display.setText(display.getText()+"0."); }
“
。否则,它应该在文本字段中显示“0”。
。问题是if条件的计算结果总是false
private void dotActionPerformed(ActionEvent evt){
String dott=display.getText();
if(dott==null)
{
display.setText(display.getText()+"0.");
}
else
{
display.setText(display.getText()+dot.getText());
}
}
我认为你可以做到:
if(dott.equals(""))
该字符串将为
”
,不为空。使用dott.isEmpty()
查看dott
是否没有内容。是另一篇文章,详细介绍了.compareTo(“”
和.isEmpty()之间的区别。
尝试以下字符串方法:
if(dott.isEmpty())
//your code
或者,您也可以使用:
if(dott.compareTo("")==0)
// your code
尝试以下方法:
String dott = ...;
dott.isEmpty();
或
但是您已经知道display.getText()是空的,那么为什么还要再次执行它呢?与“else”子句相同-您已经知道该值。所以你应该写:
String dott=display.getText();
if(dott.isEmpty()) {
display.setText("0.");
} else {
display.setText(dott+dot.getText());
}
或者更简洁地说:
String dott=display.getText();
String text = dott.isEmpty() ? "0." : dot.getText();
display.setText(text);
甚至:
String dott=display.getText();
display.setText( dott.isEmpty() ? "0." : dot.getText() );
如果(dott==null)替换为
if(点等于(“”)
如果需要,可以使用apache的
StringUtils
。链接:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
private void dotActionPerformed(ActionEvent evt){
String dott=display.getText();
if( StringUtils.isEmpty(dott))
{
display.setText(display.getText()+"0.");
}
else
{
display.setText(display.getText()+dot.getText());
}
}
空文本字段返回
”
,而不是null
null
从getText
永远不会返回。用if(dott.isEmpty())
替换if(dott.isEmpty())
,你就可以走了。根据@zron的评论,在这种情况下,我怀疑它永远不会为null。dott.isEmpty()
也应该有效。这主要是风格的问题。
String dott=display.getText();
display.setText( dott.isEmpty() ? "0." : dot.getText() );
private void dotActionPerformed(ActionEvent evt){
String dott=display.getText();
if( StringUtils.isEmpty(dott))
{
display.setText(display.getText()+"0.");
}
else
{
display.setText(display.getText()+dot.getText());
}
}