import java.util.*;
class Example {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.print("Input an integer : ");
int num = input.nextInt();
int y;
if (num > 100) {
y = 200;
}
if (num < 100) {
y = 200;
}
if (num == 100) {
y = 200;
}
System.out.println(y);
}
}
錯誤:
Example.java:19: error: variable y might not have been initialized
System.out.println(y);
^
uj5u.com熱心網友回復:
如果沒有if輸入任何 -分支,y 則永遠不會初始化。由于訪問未初始化的區域變數是非法的,因此編譯器會生成錯誤(如JLS,§16 中所定義)。編譯器無法推斷必須輸入三種情況之一。
我建議在第二種情況下使用 else if ,在第三種情況下使用 else :
import java.util.Scanner;
class Example {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.print("Input an integer : ");
int num = input.nextInt();
int y;
if (num > 100) {
y = 200;
}
else if (num < 100) {
y = 200;
}
else /* if (num == 100) */ {
y = 200;
}
System.out.println(y);
}
}
Ideone demo
uj5u.com熱心網友回復:
Javac 不進行流分析。換句話說,你知道的,要么num > 100,num < 100或者num == 100是true但的javac不知道。在這種情況下,你可以將這些結合if通過else if與else這樣的:
if (num > 100) {
y = 200;
} else if (num < 100) {
y = 200;
} else { // num == 100 must be true
y = 200;
}
您也可以為 分配一些值(例如0)y,但上述解決方案更清楚。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408038.html
標籤:
下一篇:雪花使用變數來設定資料庫和架構
