2013-12-26 4 views
1

Я пытаюсь проверить, существует ли в текстовом файле слово, заданное пользователем, или его подстрока уже существует. Вот мой код: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 являются «Dead Code», и я не знаю, почему.

+1

Возможно, ваш 'сканер' никогда не может быть« пустым »? Взгляните на документацию для «Сканера». Он выкинет «FileNotFoundException», если «файл» отсутствует, но он никогда не будет «null». Следовательно, ваш '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' :-) – Darwind

+0

В Java мертвый код - это код, который никогда не будет выполнен. – user1336827

ответ

5
scanner = new Scanner(file); 

scanner инициализируется, никогда не может быть null, поэтому никогда не будет достигнуто else заявление.

Смотрите constructor:

Броски:
FileNotFoundException - если источник не найден

Так что, если file не существует, scanner не будет null, вы будете иметь a исключение.

+0

то как я могу сказать, что если слово не существует или его подстрока, то напишите его – Charbel

0

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 экземпляр передан как аргумент.

Чтобы решить эту проблему, необходимо удалить 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(); 
+0

, тогда как я могу сказать, что если слово не существует или его подстрока, тогда напишите его – Charbel

+0

Вы хотите писать только когда 'равно 'или' подстрока 'match терпит неудачу, правильно? – harsh

+0

точно, он не работает со мной – Charbel

2
scanner = new Scanner(file); 

Это утверждение создает новый экземпляр здесь. Итак, это: if (scanner != null) никогда не будет ложным.

+0

, тогда как я могу сказать, что если слово не существует или его подстрока, тогда напишите его – Charbel

Смежные вопросы