これがJavaで可能かどうかは完全にはわかりませんが、ifステートメントで宣言された文字列をifステートメントの外でどのように使用すればよいでしょうか。
質問する
42709 次
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 に答える