2015-12-30 74 views
-2

我得到這個錯誤,但我不完全確定爲什麼,我沒有聲明(第6行)和初始化(第11行)的變量,但我仍然得到錯誤。代碼如下:錯誤:可能的數據可能沒有被初始化

public static char ReadChar (String prompt, boolean gui) { 
    // Enter (prompt, True) for gui popup, else enter prompt and false 

    // set up data and objects 
    Scanner input = new Scanner(System.in); 
    char data; 
    String dataGui, strData; 


    // prompt for an input int value 
    if (gui == true){ 

     dataGui = JOptionPane.showInputDialog(null, prompt); 
     data = dataGui.charAt(0); 

    } 

    else { 
     System.out.print(prompt); 
     strData = input.nextLine(); 

    } 
    return data; 

} 
+0

什麼,如果'if'說法是假的則只有else部分被執行這樣的數據沒有被初始化 – silentprogrammer

+0

'char數據;'你需要初始化'data'。你可以使用'char data = 0' –

回答

1

分配數據變量值。如果gui爲真,則分配data,但如果數據爲假,則分配該值。所以要麼分配in elseat a time of declaration。爲了避免錯誤,你需要分配本地變量。 Java沒有強制初始化實例變量,並且允許默認值,但是對於開發人員調用的本地變量來說,分配值。

char data = 0; 
+0

這很簡單。非常感謝你 –

+0

我以爲是因爲它是一個字符,我不能將它設置爲0,但它只是編譯:D –

+0

@BekahMarie - 檢查[this](http://stackoverflow.com/questions/26446512/can-assign -integer-value-char-but-cant-assign-integer-variable-to-char)問題和[this](http://stackoverflow.com/questions/21317631/java-char-int-conversions?lq = 1) – TheLostMind

0

您還沒有初始化char

char data = '\0'; 

char data = 0;