[英]Why doesn't this if condition work?
我創建此代碼來檢查計算器的文本字段是否包含任何內容。 如果文本字段中存在內容,則應顯示"."
。 否則,它應顯示為"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());
}
}
字符串將為""
,不為null。 使用dott.isEmpty()
查看dott
是否沒有內容。 這是另一篇有關.compareTo("")
和.isEmpty().
之間的區別的詳細信息.isEmpty().
我認為您可以:
if(dott.equals(""))
試試這個String方法:
if(dott.isEmpty())
//your code
或者您也可以使用:
if(dott.compareTo("")==0)
// your code
嘗試類似:
String dott = ...;
dott.isEmpty();
要么
dott.equals("");
String dott=display.getText();
if(dott==null) // original code; should use isEmpty()
{
display.setText(display.getText()+"0.");
}
但是您已經知道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() );
將if(dott == null)替換為
if(dott.equals(“”))
您可以根據需要使用apache的StringUtils
。 鏈接: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
: 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());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.