2012-05-17 146 views
1

我有一個轉換程序下面的代碼:變量可能未被初始化?

private void convertButtonActionPerformed(java.awt.event.ActionEvent evt) { 

    int type, value; 
    double conversion; 
    String output; 

    type = Integer.parseInt(conversionchoiceInput.getText()); 
    value = Integer.parseInt(valueInput.getText()); 

    if (type == 1) 
    { 
    conversion = inchesToCentimetres(value); 
    output = value + " inches = " + Math.round(conversion) + " centimetres"; 
    } 
    else if (type == 2) 
    { 

    } 
    else if (type == 3) 
    { 

    } 
    else if (type == 4) 
    { 

    } 
    outputLabel.setText(output); 
} 

它說:「可變輸出可能尚未initiaized」時,我已經有了?

謝謝!

+0

當你寫'String output;'你是_declaring_'輸出'。當你寫'String output =「」;'(或任何值。「」僅僅是一個例子)時,你就是_initialising_。 – Tharwen

+0

通常,分離變量的聲明和初始化(類型,值)是一個壞主意。如果可能的話,在初始化時聲明它們。只有必要時才分割它們(例如,在try/catch-block之前)。 –

回答

4

問題是output需要被初始化,不管程序執行的路徑是什麼。它僅在if路徑中初始化。因此,你需要在開始時給它一個默認值(空字符串或者其他),或者在所有分支中設置它。

String output = ""; 

if (type == 1) 
{ 
    conversion = inchesToCentimetres(value); 
    output = value + " inches = " + Math.round(conversion) + " centimetres"; 
} 
else if (type == 2) 
{ 
    output = ""; 
} 
else if (type == 3) 
{ 
    output = ""; 
} 
else if (type == 4) 
{ 
    output = ""; 
} 

當然,第一個選項是最好的。

+0

你也可以用最常見的值初始化它,這樣你就不必檢查if語句中最常見的選項,只需檢查其他語句。 –

0

如果輸入!= 1,則輸出不會被初始化。即使您在每個分支(1,2,3,4)中給出輸出值,輸出可能尚未初始化,就好像鍵入< 1或> 4,但它仍然沒有值。

0

您剛剛聲明瞭與初始化變量不同的變量。