,我得到了以下錯誤:變量OBJ可能在試圖行使尚未初始化
variable obj might not have been initialized
代碼:
import java.io.*;
public class Ex7 {
public static NationalMessage nationalMessage(String fName){
NationalMessage obj;
try{
BufferedReader scan = new BufferedReader(new FileReader(fName));
String currentline = scan.readLine();
while(currentline != null){
String[] lines = currentline.split(" ");
if(lines[0].startsWith("UK") & lines[1].startsWith("UK")){
obj = new NationalMessage(lines[0], lines[1], lines[2]);
scan.close();
break;
}
}
return obj;
}
catch(IOException e){
System.out.println("IO Error");
return null;
}
}
}
首先,我知道爲什麼我收到此錯誤,但我無法找到解決它的方法,而不必在try塊中放置另一個return語句。如果發生異常錯誤,我只希望它返回null。我能想到的唯一解決方案是放置「return obj」;在if語句的結尾處,但它會說有一個缺失的return語句。另外,如果我在第4行初始化obj,那麼它不會用它需要的參數構造NationalMessage類(就像它在IF語句中那樣)。
所以它不是一個bullsh * t問題,或者我顯然在這裏做錯了什麼。
NationalMessage obj = null; – ben75
如果文件爲空,該怎麼辦?在這種情況下,執行流程不會進入while循環,並且永遠不會分配obj。類似的,如果沒有以「UK」開頭的行。在這些情況下你想要返回什麼? – isnot2bad