Segregowanie i ustalanie kolejności

0

Witam.
Mam taki mały problem...
mam 4 elementową tablicę w której segreguje liczby od najmniejszej do największej... prócz tego w tekstfiled wyświetlam te liczby, oczywiście poprzestawiane. Przy każdym polu tekstowym znajduje się button, którego wciśnienie oznacza wybranie największego

 if(c==temps[3]){
textField3.setText(String.valueOf(f));
i=1;
}
if(c==temps[2] && i==1){
textField3.setText(String.valueOf(f));
i=2;
}
if(c==temps[1] && i==2){
textField3.setText(String.valueOf(f));
i=3;
}
if(c==temps[0] && i==3){
textField3.setText(String.valueOf(f));
i=0;
losuj();
}  

W ten sposób wybiera się największy i coraz mniejsze(taki kod w każdym z button'ów). Problem w tym iż nie wiem jak zrobić gdy ktoś źle kliknie nie mogę dać else bo wtedy nie ważne co kliknie będzie źle. Bardzo proszę o pomoc jakby ktoś nie zrozumiał załączam plik *.jar. Dodam tylko, że jestem początkującym, więc jakby były jakieś błędy w taku myślenia proszę o krytykę.

http://www.sendspace.pl/file/dce69117367835f77eab99a

0

To jest jakiś koszmar i bełkot. Napisz co chciałeś osiągnąć, a nie jak próbowałeś to zrobić. Bo z kodu powyżej wynika ze zrobiłeś to źle ;]
Żeby posortować liczby trzeba było użyć Collections.sort() a nie jakieś chore ify. Rozumiem że chodzi ci o to żeby sprawdzić czy user wybrał kolejną co do wielkości liczbę?
Ja to widzę tak:

  • robisz sobie jakiś stos do którego wrzucasz posortowane liczby.
  • robisz customowy action listener który w dostaje informacje o stosie, powiązanym edicie i liczbie która jest z nim związana
  • do buttonów przypisujesz action listenery i ustawiasz im te edity i liczby
    Sam action listener w actionPerformed ma
if(stos.getFirst() == liczbaPowiązanaZTymButtonem){
  editPowiązanyZTymButtonem.setText("ok");
  stos.pop();
}else{
  //akcja dla złego kliknięcia, np. jakiś message box
}

Przy losowaniu nowych liczb zmieniamy tym action listenerom powiązane z nimi liczby (można tam zrobić jakiś seter do tego).

0

Sortowanie zostało zrobione w następujący sposób:

a=(int)(20*Math.random()+1);
b=(int)(20*Math.random()+1);
c=(int)(20*Math.random()+1);
d=(int)(20*Math.random()+1);
index=0;
if(a==b || a==c || a==d || b==c || b==d || c==d){
    losuj();
}
textField1.setText(String.valueOf(a));
textField2.setText(String.valueOf(b));
textField3.setText(String.valueOf(c));
textField4.setText(String.valueOf(d));
temps[0] = a;
temps[1] = b;
temps[2] = c;
temps[3] = d;
for(e=0;e<3;e++){
for(index=0;index<3;index++){
if(temps[index]>temps[index+1]){
int pom = temps[index];
    temps[index] = temps[index+1];
    temps[index+1] = pom;
                               }
                            }
}
textField5.setText(String.valueOf(temps[0]));
textField6.setText(String.valueOf(temps[1]));
textField7.setText(String.valueOf(temps[2]));
textField8.setText(String.valueOf(temps[3]));
}

Chodziło mi o to, aby użytkownik wskazał największą z możliwych liczb. Kod z poprzedniego postu był zamieszczony w private void button2ActionPerformed(java.awt.event.ActionEvent evt){}. Masz 4 pola w których wyświetlają się liczby, zadaniem użytkownika jest wybrać największe,mniejsze,mniejsze i najmniejsze do tego celu zastosowałem 4 if w buttonie. Każdy if sprawdza czy jest to największa z możliwych liczb. Oczywiście, gdy zostanie kilknięty z któryś buttonów jest o 1 liczbę miej, więc zastosowałem zmienną pomocniczą i.
Może teraz zrozumiesz o co mi chodzi.

0

Ale ja zrozumiałem o co ci chodzi i napisałem ci jak powinieneś był to zrobić.

0

Rozwiązane.
Chodziło o to aby rozdzielić tego if z && na 2. Dziękuję.

0

Zdajesz sobie sprawę z tego że jak się jest początkującym to trzeba się skupić na tym żeby pisać poprawnie i żeby nabierać dobry nawyków, a nie na tym żeby "zadziałało"?
Czemu twoje podejście jest złe? A jeśli na przykład będziesz chciał to rozszerzyć do 10 liczb, to co? Nadal będziesz się bawił w kopiowanie kodu i ify? Albo jeśli będziesz chciał zliczać kliknięcia poprawne i błędne to co? Jeśli dochodzisz do momentu że chcesz skopiować kawałek kodu, to na pewno coś zrobiłeś źle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1