ArrayList vergleichen im spiel Mastermind

Jibi

Neues Mitglied
Hallo Leute,
Ich versuche das Spiel Mastermind mit Zahlen zu programmieren wobei keine Zahl doppelt vorkommen darf. Nun bin ich auf das Problem gestoßen ,dass ich die zufällige ArrayList nicht mit der des Spieler vergleichen kann (Das Programm kompiliert nicht). Ich habe auch bereits versucht die ArrayList mit einem "normalen" Array zu vergleichen was allerdings auch nicht klappt. Könnt ihr mir vielleicht weiter helfen? Vielen Dank im Voraus



Java:
import java.util.Random;
import java.util.Scanner;
import java.util.ArrayList;

public class Mastermind {

    public static void main(String[] args){
    
    
    
    int size = 8;
    ArrayList<Integer> list = new ArrayList<Integer>(8);
    for(int i = 1; i <= 8; i++) {
        list.add(i);
    }
    Random rand = new Random();
    int y = 1;
    while(y <= 4)        {
        int index = rand.nextInt(list.size());
        //System.out.println(list.remove(index));
        y = y + 1;
    }
            
            Scanner input = new Scanner(System.in);
            System.out.println("Gib ein");
            
        ArrayList<Integer> array1 = new ArrayList<Integer>(4);
        for (int i = 0; i<array1.size(); i++){
            ArrayList<Integer>.array1[i] = input.nextInt();
            
            if (array1 == list)
            System.out.println("Die zahlen sind richtig");
        
        }
    
    
    }
}
 
Zeile 28: i < 4 statt < array1.size() (die Größe der Liste ist 0, die Angabe 4 im Konstruktor der ArrayList in Zeile 27 ist nur die initiale Kapazität), Zeile 29: array1.add(input.nextInt()); und was soll in Zeile 31 verglichen werden?!? Mal abgesehen davon, dass Du mit == Referenzen vergleichst, kann eine 8-elementige Liste schlecht gleich einer 4-elementigen sein.

Nachtrag: hätte ich beinahe vergessen zu erwähnen, dass die Zeilen 17 bis 22 gar nichts bewirken. Zeile 11 brauchst Du auch nicht, da Du die Variable nirgends verwendest.
 
So hart es auch ist, sind die Zeilen 12-15 der einzige Code, der etwas sinnvolles tut. Er füllt eine ArrayList mit den Zahlen von 1 bis 8.

Deine Idee ist offenbar, diese Liste zu durchmischen und danach die ersten vier Elemente als gesuchte Lösung zu verwenden. Daran kannst du festhalten. Zum Mischen kannst du dir selbst einen Algorithmus implementieren, einfacher geht es mit Collections.shuffle(). Schau dir immer auch die Dokumentation zu deinen verwendeten Klassen an.
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#shuffle(java.util.List)
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

In der Doku von ArrayList kannst du lesen, was @mihe7 oben schon geschrieben hat, Der Konstruktor new ArrayList<>(4) erzeugt eine Liste mit einer initialen Kapazität (Fassungsvermögen). Sie ist dennoch leer und enthält keine Elemente. Die Methode size() liefert aber die Anzahl der Elemente in der Liste (Doku anschauen!).

Als nächstes solltest du dir also überlegen, wie du die vier Zahlen vom Benutzer einliest. Ansatzweise ist das ja bereits vorhanden, Schau dir an, wie du der Liste ein Element hinzufügst (hast du in der erste Liste ja schon gemacht).

Zuletzt willst du die ersten vier Elemente der beiden Listen vergleichen. Das musst du manuell machen. Jedes Element für sich.
 

Zurück
Oben