Наличие (и имен) переменных является статическим, значения являются динамическими. Если переменная не существует, вы не можете проверить, существует ли она, т. Е. Ваш код не скомпилируется.
Звучит так, как будто вам нужен enum
со значениями DECREASE
, INCREASE
и NO_CHANGE
и переменной этого типа, например
public enum Difference { DECREASE, INCREASE, NO_CHANGE }
Difference diff;
if (x2019 < x2018) {
diff = Difference.DECREASE;
} else if (x2019 > x2018) {
diff = Difference.INCREASE;
} else {
diff = Difference.NO_CHANGE;
}
// use variable here
Конечно, если вы действительно хотите, чтобы локальная переменная существовала только при определенных условиях, объявите переменную внутри блока if
или else
:
if (x2019 < x2018) {
int new_variable_decrease = 0;
// use variable here
} else if (x2019 > x2018) {
int new_variable_increase = 0;
// use variable here
} else {
int new_variable_no_change = 0;
// use variable here
}
Другой альтернативой является наличие всех трех переменных, но только одна из них имеет значение, т. Е. Только одна не является null
:
Integer new_variable_decrease = null;
Integer new_variable_increase = null;
Integer new_variable_no_change = null;
if (x2019 < x2018) {
new_variable_decrease = 0; // 0 auto-boxed to Integer.ZERO
} else if (x2019 > x2018) {
new_variable_increase = 0; // 0 auto-boxed to Integer.ZERO
} else {
new_variable_no_change = 0; // 0 auto-boxed to Integer.ZERO
}
// use all 3 variables here.