簡體   English   中英

錯誤:變量c可能尚未初始化

[英]error : variable c might not have been initialized

下面是一個簡單的程序,但是我不確定為什么編譯時會顯示錯誤:

class TwoControl {
public statis void main (String args[])  {
     int num,A,C;
     int B=5;
     num = 1;
     A=5;
     if(num<A)
     C=A+B;
     System.out.print("C Value " + C);
  }
}

可能有多種方法可以使該程序運行,但不確定為什么它不適用於上述編碼形式。

當我嘗試編譯它時,出現錯誤

Error : Variable C might not have been initialized System.out.print("C Value " + C);

是在編譯器編譯代碼時,它不會驗證控制語句嗎?

在上面的示例中,如果條件為true,那么將初始化或定義值C ,那么對於否定情況,編譯器是否拋出錯誤?

如果num> = A(情況相反),C將保持未初始化狀態。

您可以通過使用默認值定義C來修復它,例如int C = 0

您的變量C僅在以下條件下初始化:

if(num<A)
    C=A+B;

因此,如果條件為false ,則永遠不會初始化C。

擁有else子句或使用默認值對其進行初始化,即:

int num,A,C = 0;

加上Ori所說的,如果將C作為類級別的變量,則編譯器會將其默認設置為0,但由於它是局部方法,因此需要對其進行初始化:

class TwoControl {
    static int C;
public statis void main (String args[])  {
.....

這樣可以完美編譯。

聲明時初始化C

Int num,A,C = 0;

或在分配之前在if上放置else

    if(num<A)
    C=A+B;
    else
    C = 0;
    System.out.print("C Value " + C);

}

在您的代碼段中,僅當條件num> A為true時,實例化了變量C,如果num> A,則Java編譯器在編譯時無法理解。 然后,編譯器會提示您不能使用C,因為它沒有被初始化,而只是被聲明了。 您可以通過以下方式初始化C來解決它:

int num,A,C=0; 

暫無
暫無

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

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