Kommandozeilenargument

D

Dosenoeffner

Mitglied
Hallo, ich muss ein Tic Tac Toe Spiel auf Java schreiben, ich stehe aber noch am anfang fset.
Mein Programm soll 9 int werte als Kommandozeilenargument entgegen nehmen.

hier koennt ihr sehen was ich bis jetzt gemacht habe - es werden mir aber mehrere fehleer angezeigt.
java:
public class TicTacToeGame {

    int[] moves = new int[9];
    for(int i = 0;i<9;i++)
    {
        moves[i] = Integer.parseInt(args[i]);

    }

    public static void main(String[] args) {

        int[][] game = new int[3][3];
        for (int i = 0; i < game.length; i++) {
            for (int j = 0; j < game[i].length; j++) {
                game[i][j] = '_';
            }
        }
      

    }

}

meine frage ist jetzt: 1) brauche ich eine zusaetzliche methoden für die ausgaben der zahlen oder waere es beser in der main methode zu schreiben.
2)wie rufe ich die werte dann.


mfg
Vielen Dank


Hier ein Beispielablauf von der Frage:
Der Aufruf java TicTacToe 0 4 2 3 1 7 5 8 6
 
Zuletzt bearbeitet:
krgewb

krgewb

Top Contributor
Dieser Teil liegt außerhalb der Methode. Das ist kein Platz für Logik.
Java:
    for(int i = 0;i<9;i++)
    {
        moves[i] = Integer.parseInt(args[i]);

    }
Du kannst
Java:
    int[] moves = new int[9];
oben lassen, aber dann muss es static sein.
 
D

Dosenoeffner

Mitglied
Dieser Teil liegt außerhalb der Methode. Das ist kein Platz für Logik.
Java:
    for(int i = 0;i<9;i++)
    {
        moves[i] = Integer.parseInt(args[i]);

    }
Du kannst
Java:
    int[] moves = new int[9];
oben lassen, aber dann muss es static sein.
mmm verstehe nicht ganz was du meinst, wohi muss es?
 
D

Dosenoeffner

Mitglied
Dieser Teil liegt außerhalb der Methode. Das ist kein Platz für Logik.
Java:
    for(int i = 0;i<9;i++)
    {
        moves[i] = Integer.parseInt(args[i]);

    }
Du kannst
Java:
    int[] moves = new int[9];
oben lassen, aber dann muss es static sein.

gehts des auch so?:
public class TicTacToeGame {

    public static void main(String[] args) {

        int[] moves = new int[9];
        for (int i = 0; i < 9; i++) {
            moves[i] = Integer.parseInt(args[i]);

        }

        int[][] game = new int[3][3];
        for (int i = 0; i < game.length; i++) {
            for (int j = 0; j < game[i].length; j++) {
                game[i][j] = '_';
            }
        }
        System.out.println(moves [0]);

    }

}
 
temi

temi

Top Contributor
Hast du es denn einfach mal ausprobiert?

Aktuell liest du die Kommandozeilen-Parameter in ein Array ein und danach erstellst du ein weiteres Array und füllst es mit "Unterstrichen" (da es sich um ein int-Array handelt, sind es keine Unterstriche, sondern der ASCII-Wert des Zeichens '_').

Die letzte Zeile gibt dann das erste Element des ersten Arrays aus.

Was möchtest du danach mit den beiden Arrays machen?
 
D

Dosenoeffner

Mitglied
Hast du es denn einfach mal ausprobiert?

Aktuell liest du die Kommandozeilen-Parameter in ein Array ein und danach erstellst du ein weiteres Array und füllst es mit "Unterstrichen" (da es sich um ein int-Array handelt, sind es keine Unterstriche, sondern der ASCII-Wert des Zeichens '_').

Was möchtest du danach mit den beiden Arrays machen?
Also mein programm soll ( Ihr Programm nimmt genau 9 int-Werte als Kommandozeilenargumente entgegen )
(Der Aufruf java TicTacToe 0 4 2 3 1 7 5 8 6)

ich habe mehrere sachen ausprobiert ich verstehe es aber irgendwie nicht ganz

Im Anhang ist die ganze frage falls du sie lesen willst
 

Anhänge

  • assignment3 2.pdf
    294 KB · Aufrufe: 7
D

Dosenoeffner

Mitglied
Hast du es denn einfach mal ausprobiert?

Aktuell liest du die Kommandozeilen-Parameter in ein Array ein und danach erstellst du ein weiteres Array und füllst es mit "Unterstrichen" (da es sich um ein int-Array handelt, sind es keine Unterstriche, sondern der ASCII-Wert des Zeichens '_').

Die letzte Zeile gibt dann das erste Element des ersten Arrays aus.

Was möchtest du danach mit den beiden Arrays machen?
die unterstiche sollen nur als platzhalter sein, geht das eig.?

mit den beiden Arrays moechte ich das TIc Tac Toe spiel machen
 
temi

temi

Top Contributor
Im Anhang ist die ganze frage falls du sie lesen willst
Eigentlich nicht, du willst das Problem ja verstehen und lösen ;)

Bevor du anfängst zu programmieren, überleg dir erst mal, wie du es manuell (z. B. auf einem Stück Papier lösen würdest).

Als Anfang: Du hast ein leeres Spielfeld und eine Liste mit Zügen. Der erste Zug ist Spieler 1, den trägst du in das Spielfeld ein...
 
D

Dosenoeffner

Mitglied
Eigentlich nicht, du willst das Problem ja verstehen und lösen ;)

Bevor du anfängst zu programmieren, überleg dir erst mal, wie du es manuell (z. B. auf einem Stück Papier lösen würdest).
verstehe, habe ich auch
ich komme genau beim Kommandozeilenargument nicht weiter
 
D

Dosenoeffner

Mitglied
Was bedeutet das konkret?
ich habe gerade dieses Programmstück
java:
public class TicTacToeGame {

    public static void main(String[] args) {

        int[] moves = new int[9];
        for (int i = 0; i < 9; i++) {
            moves[i] = Integer.parseInt(args[i]);

        }

        int[][] game = new int[3][3];
        for (int i = 0; i < game.length; i++) {
            for (int j = 0; j < game[i].length; j++) {
                game[i][j] = '_';
            }
        }

    }

}

wie kann ich jetzt werte für dieses array speichern und die als kommandozeilenargument ausgeben lassen?

danach habe ich vor die einzelnen werte in bestimmte felder im zwei dimesionalem array zu geben
 
temi

temi

Top Contributor
wie kann ich jetzt werte für dieses array speichern und die als kommandozeilenargument ausgeben lassen?
Ich verstehe die Frage nicht... Da sind ja zwei Arrays.
danach habe ich vor die einzelnen werte in bestimmte felder im zwei dimesionalem array zu geben
Warum machst du das nicht sofort?

Abgesehen davon, ist ein zweidimensionales Array für die Aufgabe gar nicht erforderlich. Du sollst ja am Ende nur ausgeben, wer gewonnen hat.

Darum: Überlege zuerst, was du machen musst, bevor du irgendwie anfängst.

Du hast ein Spielfeld mit festgelegten Positionen:
Code:
0 1 2
3 4 5
6 7 8
Für die Ermittlung des Gewinners, ist es allerdings unerheblich, ob das untereinander oder hintereinander steht:
Code:
0 1 2    3 4 5    6 7 8

Die Argumente geben abwechselnd an, welcher Spieler, wohin setzt, also, z. B. 3 6 0 2 ergibt als Ergebnis im Array:
Code:
0 1 2    3 4 5    6 7 8
X   O    X        O

Wie kannst du prüfen, wer gewonnen hat? Dazu schau dir dein oberes Spielfeld an, z. B. wäre es ein Gewinn, wenn die Arrayelemente 0, 1 und 2 den gleichen Inhalt haben (X oder O).
 
Anzeige

Neue Themen


Oben