Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java - nejlepší algoritmus pro porovnání tří prvků.

Dobrý den,

Má 3 comboboxy, v každém z nich mám na výběr 4 barvy.

Jenže chci, aby každý měl svoji vlastní barvu - každá za 4 barev by byla vybrána pouze jednou.

Takže při každé změně potřebuji srovnat všechny 3 comboboxy.

Pomocí metody getSelectedIndex() porovnám, jestli se shoduje 1. s 2., 1. s 3. a 2. s 3.

Tento způsob je logický a srozumitelný, ale připadne mi zbytečně složitý.

Napadl mě tenhle algoritmus.

int color_value[] = new int[3];
color_value[0] = combo1.getSelectedIndex();
color_value[1] = combo2.getSelectedIndex();
color_value[2] = combo3.getSelectedIndex();
java.util.Arrays.sort(color_value);
if (color_value[0] != color_value[1] && color_value[1] != color_value[2]) {
...
}

Vytvořím pole, do něj naházím všechny 3 hodnoty, pole seřadím a teď mi stačí pouze srovnat 1. s 2. a 2. s 3.

Ale potřebuji vědět, jestli neexistuje nějaký lepší a hlavně jednodušší algoritmus.

Předem díky.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Pomocí metody getSelectedIndex() porovnám, jestli se shoduje 1. s 2., 1. s 3. a 2. s 3. Stačí porov… nový
hynajs 03.02.2017 09:21
hynajs
1 = A 2 = B 3 = A 1. a 2.: A != B => OK 2. a 3.: B != A => OK ale: 1. a 3.: A == A => !OK nový
Wikan 03.02.2017 09:49
Wikan
To jsem psal ale o rovnosti. Nerovnost ovšem není tranzitivní, jak jsi správně předvedl. Na tazatelů… nový
hynajs 03.02.2017 09:53
hynajs
Jenže chci, aby každý měl svoji vlastní barvu - každá za 4 barev by byla vybrána pouze jednou. nový
Wikan 03.02.2017 09:57
Wikan
Aha, tuto větu jsem jaksi zasklil, to je pravda. nový
hynajs 03.02.2017 10:00
hynajs
Díky za snahu, ale neřešte to, lepší algoritmus než ty tři podmínky asi neexistuje. poslední
MichalDM 24.02.2017 10:52
MichalDM

Zpět do poradny Odpovědět na původní otázku Nahoru