簡體   English   中英

變量未初始化,但它是正確的,>

[英]variable not initialized, BUT IT IS , right>

基於本文的團隊: https : //www.sitepoint.com/how-to-declare-variables-javascript/

我聲明並初始化了變量int結果; 然后在塊語句中為其賦一個值,即

if(opCode == 'a') 
result = varX + varY

但是,我的打印語句最后收到以下錯誤:

錯誤:(32、28)Java:變量結果可能尚未初始化

提前致謝。 這應該可以幫助所有其他新手開始使用Conditional和block語句。 下方是cODE。

package com.pluralsight.excercise1_conditionalstatements;
public class Main {

public static void main(String[] args) {
    int varX = 10;
    int varY = 4;
    int result;
    char opCode = 'a';


    if (opCode == 'a') {
        result = varX + varY;
    } else if (opCode == 's') {
        result = varX - varY;
    } else if (opCode == 'd') {
        result = varX / varY;
    } else if (opCode == 'm') {
        result = varX * varY;
    } else {
        System.out.println("Error, invalid code");
    }
    System.out.println(result);
}

}

您的變量未初始化。 僅當滿足您的條件之一時,它才會被初始化。 這就是編譯器抱怨的原因。

聲明它時,需要給它一些int值。 例如:

int result = -1;

這是java編譯返回未初始化result的可能性。

將變量聲明為int result = 0; 應該管用。

問題是這一行:

System.out.println(result);

如果操作碼不等於a,s,d或m,則結果永遠不會得到值,並且比起您嘗試打印它,它會產生錯誤。 但是,您已經將opCode設置為等於'a',但是java不知道這意味着結果將獲得一個值(當然我們可以看到它確實存在)。 因此,您應該將int結果更改為例如:

int result = 0; 

計算機會在else語句之后正確地向您提供此信息,因為您沒有干凈地退出該函數的語句。 您正在最后一個println中使用它,而在最后一個else之后緊接着使用它。 因此,事實上,有一個可以使用Lost print語句的容器,而不會初始化結果。 如果在else塊中放置return語句,則AST會確定未達到使用結果的最終打印行,並不再發出警告。

暫無
暫無

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

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