2016-04-16 3 views
0

я использовать объекты сканера в различных областях, как представлено ниже:java.util.Scanner Декларации объект не разрешена здесь

public String fidentifier (String u) 
{ 
    try { 
     Scanner t = new Scanner(new File("ubasic.dat")); 
     //Some Statements 
    } catch(FileNotFoundException e){ 
      System.out.println("Exception : " + e); 
    } 
} 

public String didentifier(String cat) 
{ 
    try { 
     if(cat.equals("Government")) 
       Scanner s = new Scanner(new File("ugov.dat")); 
     else 
       Scanner s = new Scanner(new File("uhc.dat")); 
     //Some Statements 
    } catch(FileNotFoundException e) { 
      System.out.println("Exception : " + e); 
    } 
} 

Как я четко заявил объекты сканера в двух различных методах, я все еще получаю ошибки, указывающие что объявление объекта сканера недопустимо в методе didentifier().

Укажите мне, где я ошибаюсь.

+1

Сделайте [mcve] и [просить], вы не можете иметь эту ошибку с тем, что вы вывесили .. – Tunaki

+0

У вас не может быть этого оператора 'if' с двумя вещами сканера. SImply просто ... «Сканер s;», а затем внутри операторов if do 's = new Scanner (...);' – 3kings

+0

@Tunaki Если вы запрашиваете инструкции, написанные после комментария '// Некоторые заявления', то эти объекты сканера считывают строки из файла, а затем считывается строка с разделителем для проверки отдельных строк. –

ответ

1

Вы можете использовать и объявить столько сканеров, как вы хотите ... (это плохая практика, но нет технических ограничений для этого ...)

... Точка меня где Я неправильно ....

ошибка: сканер не может быть решен с переменной причины ошибки в том, что вы пытаетесь объявить объект в, если еще рамках бушель не т не используются фигурные скобки {}

заменить код в методе для этого:

if (cat.equals("Government")) { 
    Scanner s = new Scanner(new File("ugov.dat")); 
} else { 
    Scanner s = new Scanner(new File("uhc.dat")); 
    // Some Statements 
} 

и все будет работать нормально ...


в конце концов, вы можете имеют один глобальный объект Scanner, и вы можете просто изменить ссылку на объект.

public String didentifier(String cat) 
{ 
    try 
    { 
     if(cat.equals("Government")) 
       s = new Scanner(new File("ugov.dat")); 
     else 
       s = new Scanner(new File("uhc.dat")); 
     //Some Statements 
    }catch(FileNotFoundException e) { 
      System.out.println("Exception : " + e); 
    } 
//your Return here... 
} 

enter image description here

0

Заявление после if имеет собственную область видимости. Не имеет смысла объявлять переменную, которая не существует на следующей строке, поскольку она выходит за рамки. Самое простое, что нужно сделать, это использовать переменную или?:

String file; 
if(cat.equals("Government")) 
    file = "ugov.dat"; 
else 
    file = "uhc.dat"; 
Scanner s = new Scanner(new File(file)); 

или

Scanner s = new Scanner(new File(cat.equals("Government") ? "ugov.dat": "uhc.dat")); 

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

  • Нет связанных вопросов^_^