2017-04-30 8 views
0

次のコードで変数スコープに関する問題があります。誰かがそれが印刷されたときになぜjavaが "シンボルを見つけることができない"のかを簡単に概観することができますか?ありがとう。Java出力変数スコープの問題

class Main 
{ 
    public static void main(String[] args) { 
     String text = "hello"; 
     if (text.indexOf(" ") == -1) //if a space doesn't exist 
     { 
      String output = "one word"; 
     } 
     else 
     { 
      String output = "more than one word"; 
     } 
     System.out.println(output); 
    } 
} 
+0

この記事を読むことがあります:http://www.geeksforgeeks.org/variable-scope-in​​-java/ –

答えて

2

変数outputあなたは、現在あなたがifelseブロックの変数output外にアクセスしたい場合は、ifブロックとelseブロック内であるように思わ含むコードブロック内だけ存在しませんifブロックの前に定義する必要があります。

1

ローカル変数

ローカル変数は、メソッドやコンストラクタ(ないヘッダ内)内で宣言されたものです。スコープと有効期間はメソッド自体に制限されています。

メソッドで定義されたローカル変数に加えて、ブロックで定義される変数もあります。 ifブロックとelseブロックです。この場合、スコープはブロック自体によって制約されます。