2015-10-15 4 views
0

Итак, я пытаюсь объявить целочисленную переменную внутри оператора if/else и распечатать ее вне ее. Что-то вроде этого:Java - печать переменной, которая была объявлена ​​внутри оператора if

int x; 
int a = 1; 
if (a == 1) 
{ 
int x = 5; 
} 
System.out.println(x); 

Это просто пример того, что я пытаюсь сделать, так как у меня нет реального кода со мной, и я не хочу, чтобы повторить это снова. Хотя это не имеет никакого значения, так как пример именно то, что мне нужно, только с разными значениями переменных и именами (но это все равно целое число). Сначала я только что объявил и инициализировал переменную внутри оператора if/else, но потом мне сказали, что мне нужно объявить ее за пределами инструкции ... Итак, я сделал это, а затем инициализировал ее в инструкции, а затем приступил к вызову это позже. Тем не менее, я все еще получаю сообщение об ошибке, либо он говорит, что переменная не была инициализирована, или если я присвою ей значение (x), а затем обновить ее внутри оператора, ошибка, которую я получаю, заключается в том, что она уже объявлена. Любая помощь будет оценена, спасибо.

+0

'Сначала я только что объявил и инициализировал переменную внутри оператора if/else, но потом мне сказали, что мне нужно объявить ее вне выражения', потому что область действия переменной ' x' заканчивается внутри 'if' – sam

ответ

0
int x = -1; 
int a = 1; 
    if (a == 1) 
    { // here begins inner 'area' for declared variables 
    x = 5; 
    }// and here ends 
    System.out.println(x); 

ОК, мой плохой! Я хотел, чтобы он задавался вопросом, почему и попробуйте другие способы его написания и позволяя ему «попадать» на ошибки IDE. Итак, мистер Неизвестный, поскольку вы объявляете переменную 'inside' if statement, она видна только через это утверждение! Поэтому, если вы хотите что-то сделать с переменным внутри оператора if, и иметь результаты за его пределами, вам нужно объявить его за пределами заявления, что делает его более широким, чем доступным! Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать;)

P.S. Следите за повторной декларацией переменной с тем же именем, что и вы пытались сделать здесь, это неприятная ошибка для поиска =)

+0

Вы должны рассмотреть небольшой пояснительный текст относительно **, почему ** это фиксирует вещи ... – dcsohl

+0

Спасибо: D См., я знал, что я должен был объявить его за пределами инструкции, но я didnt знаю, что я не должен иметь префикс «int» перед «x» ..... Я новичок в java: D – Unknown

1

Да. Локальные переменные должны быть инициализированы до их использования. Если переменные экземпляра инициализируются значениями по умолчанию, если вы не инициализировали их перед использованием.

Если вам интересно узнать причину? click here to know

Возвращаясь к вашему вопросу снова,

Поскольку Рассмотрим следующий СЦЕНАРИЙ

Последующие комментарии.

int x; // declared with no value 
int a = 0; 
if (a == 1) // this is false 
{ 
x = 5; // this never executed 
} 
System.out.println(x); // what you are expecting to print here ? 

Следовательно, вам необходимо инициализировать значение. Для экс: инициализировать его с нуля и изменить его позже на основе состояния

int x=0; 
int a = 1; 
if (a == 1) 
{ 
x = 5; 
} 
System.out.println(x); 
0

Дело в том, что вы объявили x выше. Поэтому удалите int до x внутри if-statement. Тогда это работает.

int x; 
int a = 1; 
if (a == 1) { 
    x = 5; 
} 
System.out.println(x); 

Косвенно целое начинается с 0. Если вы хотите быть уверены, что просто написать

int x = 0; 

your code here 
0

Просто назначьте Int х = 0 до вашего Условный оператор, то вместо повторного объявления х как целое число, равное 5, установите x равным 5 внутри вашего оператора if.

0

Спасибо всем за ответы, я понял, что сделал две незначительные ошибки, которые не позволили ему работать, я (в большинстве попыток) не объявлял значение для x перед выражением if, и у меня был 'int' перед x внутри оператора if, что вызвало ошибку повторного замедления.Так что да, спасибо за быстрые ответы :)

Смежные вопросы