簡體   English   中英

如果條件正常,為什么這不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM