2014-10-06 6 views
1
import java.util.Scanner; 

public class LetterGrade { 
    public static void main(String[] args) { 
    char grade; 
    String input; 
    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter grade awarded"); 

    input = keyboard.nextLine(); 

    grade = input.charAt(0); 

    switch (grade) { 
     case 'A': 
     System.out.println("Grade was between 89.5 and 100"); 
     break; 
     case 'B': 
     System.out.println("Grade was between 79.5 and 89.49"); 
     break; 
     case 'C': 
     System.out.println("Grade was between 69.5 and 79.49"); 
     break; 
     case 'D': 
     System.out.println("Grade was between 59.5 and 69.49"); 
     break; 
     case 'F': 
     System.out.println("Grade was below 59.5"); 
     break; 
     default: 
     System.out.println("Invalid grade inputted"); 
     break; 
    } 
    } 
} 

[строка: 9] Внимание: утечка ресурсов: «клавиатура» никогда не будет закрытоПредупреждение: утечка ресурсов: «клавиатура» никогда не будет закрыто

Это предупреждение, что я получаю. Я не думаю, что источник действительно просачивается. Но я не знаю, как его снять, поэтому я могу скомпилировать код

ответ

3

Вам нужно закрыть клавиатуру Scanner. keyboard.close().

+0

Где его добавить? Я добавил его в конце кода, и у меня появилась новая ошибка. –

+1

Если вы больше не используете его, то после инструкции switch. – Abbath

+1

@AjayP: Поместите его после ввода 'input' или после блока' switch'. Пожалуйста, подтвердите полезность SCOPE. –

4

Это безопасно игнорировать это предупреждение, и я бы никогда не close() сканер, который оборачивает глобальный System.in

+1

Из любопытства, почему бы вам никогда не закрыть его? – Abbath

+2

@Abbath Поскольку после того, как 'System.in' будет закрыт, вам нужно будет перезапустить свою программу, чтобы снова открыть ее. Если вы 'close()' непосредственно перед 'exit()' это нормально, но если вы извлечете это в метод, это может вызвать у вас все виды горя, так как ваша программа * таинственно * перестает принимать входные данные. –

0

Вы открыли клавиатуру с:

Scanner keyboard = new Scanner(System.in); 

Это должно быть закрыто keyboard.close() когда ввод клавиатуры больше не нужен.

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