簡體   English   中英

死代碼Java Eclipse

[英]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-elsescanner實例作為參數傳遞, 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.

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