簡體   English   中英

在Java的if語句中初始化變量?

[英]Initializing a variable in an if-statement in java?

我不斷收到錯誤變量F3,可能未在您看到的最后一行代碼中初始化。

我究竟做錯了什么?

{
    Float F1,F2, F3;

    F1 = Float.parseFloat(
      JOptionPane.showInputDialog("Enter a number and press ok."));


    F2 = Float.parseFloat(
      JOptionPane.showInputDialog("Enter a second number and press ok."));

    if(F1 >= F2)
    {

      F3=(F1 * F2) + (F1 * 2);
    }
    if(F2 >= F1)
    {
      F3 =(F1 + F2) + (F2 * 5);
    }

     DecimalFormat dec = new DecimalFormat("##.##");


  JOptionPane.showMessageDialog(null,"Your calculations are:" +(F3),"Caculations", JOptionPane.INFORMATION_MESSAGE);

您可能應該在此處使用if / else而不是if / if,以便編譯器知道F3將始終設置為一個值。

以下代碼等效於您的if / if語句:

if(F1 > F2) //The = here will always be overridden by the other if clause in your original statement so it's redundant.
{ 
  F3=(F1 * F2) + (F1 * 2);
}
else
{
  F3 =(F1 + F2) + (F2 * 5);
}

根據JLS

每個局部變量和每個空白的final字段在對其值進行任何訪問時都必須具有一個明確分配的值。

從第14.4.2節開始

如果聲明器沒有初始化表達式,則對變量的每個引用都必須在對變量的賦值之前執行,否則會發生編譯時錯誤。

使用此處的代碼,有可能在使用F3之前(在代碼片段的最后一行)沒有任何內容分配給F3

使用F3 = null

您的代碼等效於:

if(F1 > F2) {
  F3 = (F1 * F2) + (F1 * 2);
} else {
  F3 = (F1 + F2) + (F2 * 5);
}

這應該使錯誤消失。

聲明變量F3時,請為其分配空值。 由於您的if條件,可能會導致此變量不會被分配任何值

嘗試這個

Float F1=0,F2=0, F3=0;

最好的方法是使用if-else語句,並且不要將null賦給變量。 If-else語句更適合人類和編譯器。 分配null是沒有意義的,並且使編譯器無法檢查未初始化的問題以進行將來的修改,如果不進行檢查,則可能會收到NullPointerException。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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