Я создаю скрипт, который отображает результаты в зависимости от выбранных параметров.Изменение длинной if/else на короткую логику карты
Я использую: А, В, С, D, Е, F, G, Н (в будущем будет больше)
int A = 0;
int B = 0;
int C = 0;
int D = 0;
int E = 0;
int F = 0;
int G = 0;
int H = 0;
окончательным Ансвер будет одним из 16 комбинации.
A;C;E;G = Nr1
A;C;E;H = Nr2
A;C;F;G = Nr3
A;C;F;H = Nr4
A;D;E;G = Nr5
A;D;E;H = Nr6
A;D;F;G = Nr7
A;D;F;H = Nr8
B;C;E;G = Nr9
B;C;E;H = Nr10
B;C;F;G = Nr11
B;C;F;H = Nr12
B;D;E;G = Nr13
B;D;E;H = Nr14
B;D;F;G = Nr15
B;D;F;H = Nr16
Я хочу показать потенциальные варианты.
При нажатии комбинации: A, C' then answer is '"Nr1,Nr2,Nr3,Nr4"
При нажатии комбинации: A, G' then answer is '"Nr1,Nr3,Nr5,Nr7"
Позже будет больше переменных I
, J
, K
, L
.... и т.д. Но ответы будут только шестнадцатый
Что может быть логикой для структуры данных A, такой как Map
, я немного застрял?
Важно - комбинации могут быть созданы также смешивать случаи , например: H;C;E;A
или E;C;A;H
.... и т.п. ответ будет Nr1
If/Else
кажется слишком долго. в настоящее время код:
String scoreTeamA = "waiting for the results";
if (A == 1) {
if (C == 1) {
if (E == 1) {
if (G == 1) {
scoreTeamA = "The answer is: Nr1"; //combination: A;C;E;G
} else if (H == 1) {
scoreTeamA = "The answer is: Nr2"; //combination: A;C;E;H
} else scoreTeamA = "Possible variants, one of: Nr1, Nr2"; //combination: A;C;E
} else if (F == 1) {
if (G == 1) {
scoreTeamA = "The answer is: Nr3"; //combination: A;C;F;G
} else if (H == 1) {
scoreTeamA = "The answer is: Nr4"; //combination: A;C;F;H
} else scoreTeamA = "Possible variants, one of: Nr3,Nr4"; //combination: A;C;F
} else scoreTeamA = "Possible variants, one of: Nr1,Nr2,Nr3,Nr4"; //combination: A;C;
} else if (D == 1) {
scoreTeamA = "Possible variants, one of: Nr5,Nr6,Nr7,Nr8";//combination: A;D;
} else
scoreTeamA = "Possible variants, one of: Nr1,Nr2,Nr3,Nr4,Nr5,Nr6,Nr7,Nr8"; //combination: A
} else if (B == 1) {
scoreTeamA = "Possible variants, one of: Nr9,Nr10,Nr11,Nr12,Nr13,Nr14,Nr15,Nr16"; //combination: B
}
Я вижу четыре двоичных переменных. Используйте дерево. – Compass
@ HypnicJerk и @Compass Я могу сократить количество переменных; до 4 ('A, B, C, D'), тогда я получаю каждый из этих элементов 3 значения' -1; 0; 1' –
Возможно, это ['BitSet'] (http://docs.oracle.com/javase/8/docs/api/java/util/BitSet.html), поскольку здесь будет показано представление для любой комбинации букв. Затем вы можете использовать «Map» для получения ответов. –
Seelenvirtuose