«в» никогда не закрывается

в моем коде есть ошибка, он дает мне предупреждение

Предупреждение: утечка ресурсов: вход никогда не закрывается

У меня никогда не было этой проблемы раньше, на самом деле я пробовал старые программы, которые я написал, и это все еще дает мне ту же проблему. Как это исправить ?

import java.util.Scanner ;


public class CountVowels
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
      System.out.println("Enter a word: ");
      String word = in.next();

      int vowelCount = 0;
      for (int i = 0; i < word.length(); i++)
      {
         char currentCharacter = word.charAt(i);
         if (currentCharacter == 'a' || currentCharacter == 'A'
            || currentCharacter == 'e' || currentCharacter == 'E'
            || currentCharacter == 'i' || currentCharacter == 'I'
            || currentCharacter == 'o' || currentCharacter == 'O'
            || currentCharacter == 'u' || currentCharacter == 'U')
         {
            vowelCount++;
         }
      }
      System.out.println(vowelCount + " vowel(s).");



   }
} 

person user3251123    schedule 20.09.2014    source источник
comment
Закрой его? Или, что еще лучше, используйте try-с-ресурсами, чтобы закрыть его автоматически.   -  person chrylis -cautiouslyoptimistic-    schedule 21.09.2014
comment
Предупреждения — это не то же самое, что ошибки.   -  person Jeroen Vannevel    schedule 21.09.2014
comment
docs.oracle.com/javase/ 7/docs/api/java/util/   -  person xlm    schedule 21.09.2014


Ответы (1)


Вам просто нужно закрыть сканер в конце вашей функции с помощью:

in.close();

Как это:

public static void main(String[] args)
{
   Scanner in = new Scanner(System.in);
   // Do some stuff using the scanner
   in.close();
}

А также посмотрите здесь.

person pzaenger    schedule 20.09.2014
comment
+1, ага :). Еще лучше было бы, если бы он использовал оператор try/catch, а также мог бы добавить finally, чтобы закрыть сканер. - person nem035; 21.09.2014