Using variables outside of an if-statement

I'm not entirely sure if this is possible in Java, but how would I use a string declared in an if-statement outside of the if-statement it was declared in?


Solution 1:

You can't because of variable scope.

If you define the variable inside an if statement, than it'll only be visible inside the scope of the if statement, which includes the statement itself plus child statements.

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

You should define the variable outside the scope and then update its value inside the if statement.

String a = "ok";
if(...){
    a = "foo";
}

Solution 2:

You need to distinguish between a variable declaration and assignment.

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

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

If you try to use a declared variable without assigned value, like :

String foo;

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

you will get a compilation error as the variable is not assigned anything, as it is only declared.

In your case, you declare the variable inside a conditional block

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

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

so it is only "visible" inside that block. You need to move that declaration outside and assign it a value somehow, or else you will get conditional assignment compilation error. One example would be to use an else block :

String foo;

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

or assign a default value (null?) on declaration

String foo = null;

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