2016-02-29 4 views
-2

У меня есть параметр командной строки имени входного файла, и я использовал приложение Scanner Connection inorder для чтения ввода из этого текстового файла, и после выполнения операций я закрыл приложение Scanner Connection. Даже тогда его отображение NZEC (ошибка времени выполнения).Связь не закрыта в сканере

В моей машине, я работаю с меньшим количеством входов, поэтому ошибка didnot воспроизвести, но в интернет-сайтов конкурса программирующий ошибка происходя

Sol: Если я использую Try-Выгоду, проблема решена.

Но пожалуйста, предложите мне причину этой ошибки

Whats_next() 
{ 
    Scanner s=new Scanner(System.in); 
    while(s.hasNextLine()) 
    { 
    int x=s.nextInt(); 
    int y=s.nextInt(); 
    int z=s.nextInt(); 
    if(x!=0 || y!=0 || z!=0) 
    { 
     if((y-x)==(z-y)) 
      { 
       System.out.print("AP"); 
       System.out.println("\t"+(z+(y-x))); 
      } 
     else if((y/x)==(z/y)) 
      { 
       System.out.print("GP"); 
       System.out.println("\t"+z*(y/x)); 
      } 
    } 
    } 
    s.close(); 
} 


    public static void main(String[] args) 
    { 
    try 
    { 
     if(args.length==1) 
      System.setIn(new FileInputStream(args[0])); 
    } 
    catch(Exception e) 
    { 

    } 
     Whats_next w=new Whats_next(); 
    } 
+2

Когда вы закрываете свой «Сканер», он также закрывает 'System.in' (и после этого вы не можете повторно открыть' System.in'). –

+0

Не устанавливайте System.in на сайте конкурса и не закрывайте сканер. – Bob

ответ

0

Вы должны закрыть соединение в финальном блоке.

try { 
    Scanner scanner = new Scanner(System.in); 
    // your logic 
} 
finally { 
    if(scanner!=null) 
     scanner.close(); 
} 
+0

Нужно ли использовать блок try-Catch-finally, если мы закрываем нормально, почему его не принимаем. Можете ли вы ответить мне – Rakesh

+0

. Рекомендуется закрыть соединение в блоке finally, потому что если у вас есть несколько блоков catch, у вас будет переписать conn.close() Блок finally всегда будет выполнен после попытки, независимо от того, что произойдет. Поэтому, если вы получите исключение, с которым вы не справились, с блоком finally вы будете уверены, что ваши ресурсы закрыты должным образом. – FallAndLearn

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