[英]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.