Drei Bedingungen -> 9 Fällen, welcher Ansatz besser

Javamoto

Mitglied
Ich habe drei Variablen, welcher die Werte 0 (nicht gesetzt) oder 1 (gesetzt) annehmen sollen.

Das dient dazu, dass im Rahmen eines Experiments am Anfang festgelegt werden soll was eine Bestimmte Gruppe zu sehen bekommt. Insgesamt sind 8 Gruppen möglich.

z.B. bei einem Quizz, variable A = zeige ob richtig / falsch, variable B = zeige Statistik, variable C = zeige Feedback.

Daraus resultieren folgende Möglichkeiten:

A B C

0 0 0
0 0 1
.......
1 1 1

Habe mir 2 verschiedene Ansätze überlegt

1). für jede Möglichkeit eine neue Variable definieren, insgesamt 8 Stück, dann mit if / else schauen ob eine Kombination eintrifft.

z.B.

Java:
     int zeroAzeroBzeroC;
      int zeroAzeroBoneC;
....................
      int oneAoneBoneC;

-> hier wähle ich eine der Bedingungen z.B. oneAzeroBoneC =1;

     if (zeroAzeroBzeroC ==1){
       zeige nichts;
     }
     if (zeroAzeroBoneC ==1){
      zeige statistik;
     }

........

Dann vor dem Experiment start die gewünschte Kombination (Variable) mit 1 belegen, rest 0 lassen.

2 Ansatz). ein Array erstellen, für A,B,C mit 0 oder 1 belegen um gewünschte Bedingung zu erhalten.

Java:
  int A = 0;
  int B = 1;
  int C = 1;

  int[] arrayBedingng = new int[3]
   
   array[0] = A;
   array[1] = B;
   array[2] = C;

 dann mit if / else überprüfen

  .. if (array[0] == 0){
    
            if(array[1]==0){
                      
                  if(array[2]==0{
                        zeige nichts;
                  }
                  else{
                        zeige feedback;                   
                  }
             else{
                  
                  if(array[2]==0{
                        zeige statistik;
                  }
                  else{
                        zeige statistik + feedback;   
                
.............. usw.

Bei den Ersten Ansatz habe ich viele Variablen, wenn noch eine Bedingung bei dem Experiment dazu kommt, habe ich statt 8 auf ein mal 16 Variablen was wohl nicht Sinn der Sache ist.

Bei den Zweiten Ansatz habe ich zwar nur die Variablen und ein Array, dafür Verschachtelung ohne Ende.

Gibt es eine elegantere Lösung ?? ....

Danke für alle Vorschlägen!
 

XHelp

Top Contributor
Musst du die überhaupt verschachteln? Die Sachen habe ja nichts miteinander zu tun.
Java:
boolean showAnswer = true;
boolean showStatistics = false;
boolean showFeedback = true;
if (showAnswer) {
  zeigeAntworten();
}
if (showStatistics) {
  zeigeStatistik();
}
if (showFeedback) {
  zeigeFeedback();
}
 

Marco13

Top Contributor
Falls das nur ein Beispiel war, und die dinge im realen Fall DOCH etwas miteinander zu tun haben, gibt es andere mögliche Lösungsansätze. Am pragmatischsten wäre IMHO sowas wie
Code:
int pattern = 0;
if (conditionA) pattern |= (1<<0);
if (conditionB) pattern |= (1<<1);
if (conditionC) pattern |= (1<<2);
switch (pattern)
{
    case 0: /* 000 */ break;
    case 1: /* 001 */ break;
    case 2: /* 010 */ break;
    case 3: /* 011 */ break;
    ...
    case 7: /* 111 */ break;
}

Oder eben was ""objekorientierteres"", wie
Code:
Map<Integer, Runnable> map = ...

int pattern = 0;
if (conditionA) pattern |= (1<<0);
if (conditionB) pattern |= (1<<1);
if (conditionC) pattern |= (1<<2);

Runnable r = map.get(pattern);
r.run();
 

Javamoto

Mitglied
Die Parameter habe insoweit miteinander was zu tun, da die Anzeige auf einmal statt finden soll.

Alle Variablen auf null, keine Anzeige
....
Alle Variablen auf eins (belegt) dann zeige alles Statistik, Feedback und Antwort.

Jetzt habe ich genug Ideen zum testen, vielen DANK!
 

oopexpert

Mitglied
Ich würde das über eine Liste mit Elementen der folgenden Typ-Hierarchie lösen. Das macht den Entwurf sehr flexibel.

Java:
abstract class AnzeigeOption {
    public abstract void anzeigen();
}

class ErgebnisAnzeigeOption extends AnzeigeOption {}
class StatistikAnzeigeOption extends AnzeigeOption {}
class FeedbackAnzeigeOption extends AnzeigeOption {}

Man braucht nur über die Liste zu iterieren.

Java:
for (AnzeigeOption option: listAnzeigeOptionenFuerGruppe) {
   option.anzeigen();
}
 

Ähnliche Java Themen

Neue Themen


Oben