# Mastermind Treffer abfrage



## chr|s0r (19. Jun 2009)

Hallo,

ich habe ein Problem bei der Abfrage der indirekten Treffer in meiner Mastermind Applikation. Wenn die erzeugten Zahlen z.B ROT, GELB, GRÜN, BLAU sind und ich vier mal ROT eingebe bekomme ich als Ergebniss 1 Direkten und 3 Indirekte Treffer was ja falsch ist... 

Hier mal die betreffende Methode:


```
public int[] checkTreffer(int eingabe[]) {

        //eingabe ist 4 stellen groß und beinhaltet vier Integer zahlen von 1-6 die  
        //eingegeben wurden

        //0 für kein treffer
        //1 für indirekter Treffer
        //2 für direkter Treffer

        int treffer[] = new int[4];
        for(int a = 0;a<4;a++){
            treffer[a] = 1;
        }

        //im RandomArray sind die vier Random erzeugten Zahlen zwischen 1-6
       //wobei Zahlen auch doppelt vorkommen können

        
        for (int i = 0; i < 4; i++) {
            if (eingabe[i] == randomArray[i]) {
                treffer[i] = 2;
            }
        }
        
        boolean temp;
        
        for (int i = 0; i < 4; i++) {
            temp = false;
            for (int i2 = 0; i2 < 4; i2++) {
                if (eingabe[i] == randomArray[i2]) temp = true; 
            }
            if (temp == false) treffer[i] = 0;
        }
        
        return treffer;

    }
```


----------



## Ezra (19. Jun 2009)

Dass das bei Deinem Vorgehen passiert, ist völlig logisch. Die anderen ROT-Werte sind ja tatsächlich indirekte Treffer und wissen nichts von dem ROT, das direkt getroffen hat. In solchen Fällen musst Du die indirekten Treffer ausschließen.

Edit: Versuch es mal damit


```
public static int[] checkTreffer(int[] eingabe) {
		 
        //eingabe ist 4 stellen groß und beinhaltet vier Integer zahlen von 1-6 die  
        //eingegeben wurden
 
        //0 für kein treffer
        //1 für indirekter Treffer
        //2 für direkter Treffer
 
        int treffer[] = new int[4];
        for(int a = 0;a<4;a++){
            treffer[a] = 0;
        }
 
        //im RandomArray sind die vier Random erzeugten Zahlen zwischen 1-6
       //wobei Zahlen auch doppelt vorkommen können
 
        
        for (int i = 0; i < 4; i++) {
            if (eingabe[i] == randomArray[i]) {
                treffer[i] = 2;
            }else{
            	for(int j = 0; j < 4; j++){
            		if(eingabe[j] == randomArray[i] && eingabe[j] != randomArray[j]){
            			treffer[j] = 1;
            		}
            	}
            }
        }
        
        return treffer;
}
```


----------



## chr|s0r (19. Jun 2009)

funktioniert, danke schön.

Hatte irgendwie einen Hänger


----------

