2016-03-29 3 views
0

У меня есть этот код Java:Как сохранить переменный вне если заявление

String e; 
if(true){ 
e = "ee";  
} 
if(e == "ee"){ 
System.out.println(e); 
} 

Как я могу «использовать» переменные е из первых, если заявления? Я добавляю некоторые глупые условия (если (правда) и т. Д.) Только для попытки.

Я извиняюсь за мой плохой английский: v

+0

Сравнение строк с использованием '== 'оператор не делает то, что, по вашему мнению, делает. Вместо этого используйте «ee» .equals (e) ». – JonK

+2

Возможный дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – JonK

+0

Можете ли вы прояснить, какова ваша проблема и получаете ли вы ошибку и что это такое? –

ответ

1

Вы его сохранили, вы просто сравнивая это неправильно. Используйте метод equals для сравнения значений. == operator сравнивает ссылочное равенство.

+0

Это 'equals' и' == 'должны делать то же самое в этом случае. –

+1

В этом случае да, но с условием «если (правда)». Я сомневаюсь, что это фактический код, который он запускает, а просто короткое представление о том, что он делает. – Stultuske

+0

Хорошая точка. ИМХО Пока неясно, о чем спрашивает проблема. –

1

Чтобы сравнить переменную с другой строкой, используйте equals и not ==. См How do I compare strings in Java?

String e; 

if(true){ 
    e = "ee";  
} 

if(e.equals("ee")){ 
    System.out.println(e); 
} 
+0

В этом случае это будет делать то же самое. –

+1

«ee» .equals (e) (как пояснил JonK в комментариях) является более безопасным. Как только условие больше не выполняется, если (true), или как только будет выполнено тестирование на мутацию в этом коде, он выкинет одно исключение NullPointerException после другого. – Stultuske

+0

@Stultuske безопаснее, но это ответ на проблему или более комментарий? –

0

Проблема, скорее всего, в том, что компилятор не знает переменную должен быть установлен. Существует несколько способов решить эту проблему.

Дайте по умолчанию.

String e = null; 

или сделать его ясно, что альтернативная ветвь невозможно

if (condition) { 
    e = "ee";  
} else { 
    throw new AssertionError(); 
} 

или дать ему альтернативное значение.

if (condition) { 
    e = "ee";  
} else { 
    e = "that was unexpected"; 
} 
0

Вы можете использовать:

String e; 

if(true){ 
    e = "ee";  
} 

if("ee".equals(e)){ 
    System.out.println(e); 
} 

Потому что если е будет нулевым, то вы не получите NullPointerException, если вы будете использовать, как выше

if("ee".equals(e)){ //Some operation } 
Смежные вопросы