Атрибут
public
относится не к локальной переменной , а к переменной экземпляра .
Внутри тех же объявлений функций следуют два правила:
- порядок объявления : если локальная переменная еще не была объявлена, вы не можете ее использовать.
- scoping : если переменная была объявлена внутри области (
{ ... }
), то вы не можете получить к ней доступ из-за пределов.
Если вы хотите получить доступ к переменной позже в коде, вы должны объявитьэто перед циклом:
String factored;
if (....) {
....
....
factored = whatever;
}
System.out.println(factored);
или иметь его в качестве переменной экземпляра (бессмысленно, поскольку это локальная область, которую нужно печатать, но неважно):
class FooBar
{
String factored;
void method() {
...
...
if (...) {
...
...
factored = whatever;
}
System.out.println(factored);
}
}
или в-третьих, вы можетевернуть переменную из метода и использовать ее где-нибудь еще:
class FooBar
{
String method() {
...
...
if (...) {
...
...
return whatever;
}
return null;
}
void otherMethod() {
String factored = method();
System.out.println(factored);
}
}