[英]Dead code java eclipse
我正在嘗試檢查用戶給定的單詞在文本文件中是否已經存在或它的子字符串是否已經存在。 這是我的代碼:
String ans = null;
Scanner scanner = null;
do
{
System.out.print("Please enter a new word: ");
String Nword = scan.next();
System.out.print("And its appropriate Hint: ");
String Nhint = scan.next();
Word word = new Word(Nword , Nhint);
File file = new File("C:\\Users\\Charbel\\Desktop\\Dictionary.txt");
file.createNewFile();
scanner = new Scanner(file);
if (scanner != null)
{
String line;
while (scanner.hasNext()) {
line = scanner.next();
for(int i = 0 ; i<line.length(); i++)
if ((line.equals(Nword)) || (Nword.equals(line.substring(i))))
{
System.out.println("The word already exists.");
break;
}
}
}
else
{
FileWriter writer = new FileWriter(file , true);
writer.write(word.toString());
writer.write(System.lineSeparator());
writer.flush();
writer.close();
System.out.println("Your word has successfuly added.");
System.out.print("\nWould you like to add another word ?\nPress 0 to continue.");
ans = scan.next();
}
} while(ans.equals("0"));
Eclipse表示else
條件之后的語句是“死代碼”,我不知道為什么。
scanner = new Scanner(file);
scanner
已初始化,永遠不能為null
,因此永遠不會到達else
語句。
參見構造函數 :
拋出:
FileNotFoundException
如果找不到源
因此,如果file
不存在, scanner
將不會為null
,那么您將有一個異常 。
scanner = new Scanner(file);
該語句在這里創建一個新實例。 所以這就是: if (scanner != null)
永遠不會為假。
Dead-Code
永遠不會執行,例如:
if(true) {
// do something
}else {
// do something else <-- this is dead code, or else-block is dead code
}
在您的情況下,由於Scanner
是在if(scanner != null)
之前創建的,因此無法執行關聯else
。 如果Scanner
創建失敗錯誤將被再次拋出在else
不會被執行,因此,從編譯器的點的視圖沒有機會else
塊得到執行,因此dead-code
。
if-else
將scanner
實例作為參數傳遞, if-else
會有意義。
要解決此問題, else
應刪除!
以下應糾正您的代碼:
scanner = new Scanner(file);
FileWriter writer = new FileWriter(file, true);
if (scanner != null) {
String line;
while (scanner.hasNext()) {
line = scanner.next();
for (int i = 0; i < line.length(); i++)
if ((line.equals(""))
|| ("".equals(line.substring(i)))) {
System.out.println("The word already exists.");
break;
} else {
writer.write(word.toString());
writer.write(System.lineSeparator());
writer.flush();
System.out.println("Your word has successfuly added.");
System.out.print("\nWould you like to add another word ?\nPress 0 to continue.");
ans = scan.next();
}
}
}
writer.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.