Array Fehler

xloouch

Erfahrenes Mitglied
Hallo zusammen

Ich bin momentan an einem kleinen MasterMind Projekt beschäftigt. Nun gibt es ein kleines Problem bei einer meinen Methoden. Irgendwie zählt es nicht richtig, ich weiss jedoch nicht wieso.

Hier nun mal der Code. Ich werde ihn anschliessend erläutern..

Code:
private void calculateUser(int[] userChoise){
        evaluatedPinsAndColor=0;
        evaluatedColor=0;
        
        int elementCount=userChoise.length;
        
        for(int i=0; i < elementCount; i++){
            gameArray[i][doneAttempts]=userChoise[i];
            
            if(gameArray[i][0]==gameArray[i][doneAttempts]){
                evaluatedPinsAndColor++;
            } else {
                for(int j=0; j < elementCount; j++){
                    
                    if(gameArray[j][doneAttempts]==gameArray[i][0]){
                        evaluatedColor++;
                    }               
                 }
            }
        }

Also der Array ist zB vier Integers lang. Bsp. {1,2,3,4}. Im gameArray[i][0] ist die Vorgabe gespeichert, mit der der eingegeben Array verglichen werden soll. [i] referenziert auf die jeweilige "Zeile" (wenn i=0, dann also auf den Wert 1);

Die erste if-Schleife (die mit dem evaluatedPinsAndColor++;) funktioniert auch wunderbar. dort liegt nicht das Problem. Es liegt an der zweiten Schleife. Dort will ich ja jede eingabe mit irgend einem Wert aus dem "vorgegebenen" Array vergleichen. Aber irgendwie gibt mir dies immer einen falschen wert aus, wenn ich zwei mal die gleiche Zahl im Eingabearray habe.. (also {1, 3, 1, 4} aber richtig währe { 1, 3, 4, 1} ) eigentlich sollte es 2 ausgeben bei evalutatedColor. Es gibt mir jedoch immer nur 1 aus..

Kann mir jemand sagen, wieso?

Vielen Dank für eure Hilfe im voraus.
 
Falls du mit Eclipse arbeitest, solltest du mal den Debugger benutzen. Da siehst du dann ganz schnell, wo der Fehler liegt.

Setze einfach einen Breakpoint in der Schleife und starte das Projekt mit dem Debug Button.

Gruß Stefan
 
Hi.

Das Problem ist, das du wenn du das Array in der 2ten Schleife kontrollierst das userChoice Array noch gar nicht komplett kopiert hast und in
Code:
gameArray[j][doneAttempts]
für j > i (vermutlich) nur Nullen drin stehen.

Gruß
 
@teppi

Leider benutze ich nicht Eclipse sondern ein vorgeschriebenes Programm.

@deepthroat

ich glaube das reicht um deine Antwort zu widerlegen:

Code:
gameArray[i][doneAttempts]=userChoise[i];

Aber ich weiss nun, auf was du heraus willst. In diesem Falle, sollte ich zuerst alles in den gameArray schreiben mit einer Schleife, und dann erst mit der Hauptabfrage starten.

So. Habe die Methode nun nachgebessert:

Code:
 private void calculateUser(int[] userChoise){
        evaluatedPinsAndColor=0;
        evaluatedColor=0;
        
        int elementCount=userChoise.length;
        
        for(int h=0; h < elementCount; h++){
            gameArray[h][doneAttempts]=userChoise[h];
        }
        for(int i=0; i < elementCount; i++){
            if(gameArray[i][0]==gameArray[i][doneAttempts]){
                evaluatedPinsAndColor++;
            } else {
                for(int j=0; j < elementCount; j++){
                    
                    if(gameArray[i][0]==gameArray[j][doneAttempts]){
                        evaluatedColor++;
                    }
                }
            }
        }

Danke nochmals.
 
Zuletzt bearbeitet:
Zurück