2016-04-16 21 views
0

:二つの異なる方法でIはっきりと宣言したスキャナのオブジェクトとして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

2つのスキャナのもので 'if'文を使うことはできません。単純にするだけです... 'Scanner s;'そして、if文の中に 's = new Scanner(...);' – 3kings

+0

@Tunakiコメント '// Some Statements'の後に書かれた文を尋ねるなら、これらのScannerオブジェクトはファイルから行を読み込み、その行を区切り文字で分割して個々の文字列をチェックします。 –

答えて

1

...(それは悪い習慣ですが、そのための技術的な制限がありません...)

... ポイントに私が出ています私は間違っている....

エラーは次のとおりです。スキャナが変数 に解決できないエラーの理由は、あなたがもし他のスコープでオブジェクトを宣言しようとしているということですbuすることができます最後に...

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

を、すべてが正常に動作します


を:トンには、この方法でコードを置き換え中括弧{}

を使用していません1つのグローバルScannerオブジェクトがあり、オブジェクトの参照を変更することができます。 if

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

ステートメントは、それ自身のスコープを持っています。スコープの外にある次の行に存在しない変数を宣言するのは意味がありません。最も簡単な方法は、変数を使用することですか?

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")); 
関連する問題