8

これがJavaで可能かどうかは完全にはわかりませんが、ifステートメントで宣言された文字列をifステートメントの外でどのように使用すればよいでしょうか。

4

2 に答える 2

19

variable scopeのため、できません。

ステートメント内で変数を定義すると、ステートメント自体と子ステートメントを含むステートメントifのスコープ内でのみ表示されます。if

if(...){
   String a = "ok";
   // a is visible inside this scope, for instance
   if(a.contains("xyz")){
      a = "foo";
   }
}

ifスコープ外で変数を定義してから、ステートメント内でその値を更新する必要があります。

String a = "ok";
if(...){
    a = "foo";
}
于 2012-11-12T02:14:49.510 に答える
5

変数宣言代入を区別する必要があります。

String foo;                     // declaration of the variable "foo"
foo = "something";              // variable assignment

String bar = "something else";  // declaration + assignment on the same line

次のように、値を割り当てずに宣言された変数を使用しようとすると、次のようになります。

String foo;

if ("something".equals(foo)) {...}

変数は宣言されているだけなので、変数には何も割り当てられていないため、コンパイル エラーが発生します。

あなたの場合、条件付きブロック内で変数を宣言します

if (someCondition) {
   String foo;
   foo = "foo";
}

if (foo.equals("something")) { ... }

したがって、そのブロック内でのみ「表示」されます。その宣言を外部に移動し、何らかの方法で値を割り当てる必要があります。そうしないと、条件付き割り当てのコンパイル エラーが発生します。1 つの例は、elseブロックを使用することです。

String foo;

if (someCondition) { 
   foo = "foo";
} else {
   foo = null;
}

または宣言にデフォルト値(null?)を割り当てます

String foo = null;

if (someCondition) {
   foo = "foo";
}
于 2012-11-12T02:16:48.623 に答える