2015-10-31 5 views
-2

Я пытаюсь обработать текст из введенного пользователем файла при компиляции сканера в не может быть найден. Я предполагаю, что его поймали. что я могу сделать, чтобы сделать эту работу?переменная не может быть найдена после попытки блока

String namef = getf.nextLine(); 
File inPut = new File(namef); 

try { 
    Scanner in = new Scanner(inPut);        
} 
catch (FileNotFoundException e) { 
    System.out.println("file not found"); 
} 

while(in.hasNextLine()) { // process file 
    String line = in.nextLine(); 
    String pLine = parse(count, namef); 
} 
+1

Знаете ли вы что-нибудь о «переменных областях»? Если нет, посмотрите. – Tom

+1

'in' доступен только внутри области' try {} '. Поэтому переместите цикл while в этот блок –

ответ

2

@Tom is right. Вы должны объявить сканер вне блока try.

 String namef = getf.nextLine(); 
    Scanner in = new Scanner(); 

    File inPut = new File(namef);          
    try 
    { 
     in = new Scanner(inPut); 
     while(in.hasNextLine())  // process file 
     { 
     String line = in.nextLine(); 
     String pLine = parse(count, namef); 
     }       
    } 
    catch (FileNotFoundException e) 
    { 
     System.out.println("file not found"); 
    } 
+0

спасибо, ребята, я думаю, что у меня есть его сейчас – zxcvbnm

+0

Решение является хрупким. Если файл не найден, этот код создаст «NullPointerException». Поэтому лучше всего переместить цикл while в блок try (где его выполнение пропускается, если файл не найден). Также отсутствует закрытие потока. Изящным решением для этого будет попытка попробовать ресурсы (сканер in = new Scanner (inPut)) {... ', который автоматически закрывает поток после блока try. – CoronA

+0

Спасибо за информацию ребята, я очень ценю это – zxcvbnm

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