Создание новых переменных с условными операторами в Java - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь создать новые переменные в Java на основе операторов сравнения (три разные переменные: одна для меньшего, одна для большего и одна для равного), чтобы проверить разницу между двумя переменными между двумя годами

Данные организованы в две категории за два года, которые в сумме составляют 100 для каждого года, как показано ниже:

2018 X=70%        2019 X=20%
2018 Y=30%        2019 Y=80%

Я хочу сделать следующие утверждения для x и y:

  • Если x 2019 больше x 2018, то new_variable_decrease
  • Если x 2019 меньше x 2018, то new_variable_decrease
  • Если x 2019 равно x 2018,затем new_variable_no_change

Я новичок в Java, но я попытался установить новую переменную с помощью int и оператора if (который не запускался в программе, которую я использую -Q)

int new_variable_increase;
if (x2019 > x2018) {new_variable_increase}

int new_variable_increase;
if (x2019 > x2018) {new_variable_increase}

1 Ответ

0 голосов
/ 14 июня 2019

Наличие (и имен) переменных является статическим, значения являются динамическими. Если переменная не существует, вы не можете проверить, существует ли она, т. Е. Ваш код не скомпилируется.

Звучит так, как будто вам нужен 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...