Char-Array erstellen

actlyc

Mitglied
Hallo liebe Community,
vorweg möchte ich sagen, dass ich im Thema Programmieren ein kompletter Anfänger bin.
Ich möchte mittels Java ein Feld bzw. ein Spielfeld erstellen. Dieser soll den Dateityp char haben und aus 8 Spalten und 4 Zeilen bestehen. Im Punkt (0/0) soll ein P (Player) stehen. Das restliche Spielfeld soll mit Punkten (.) gefüllt werden.

Mein Ansatz:
Java:
public class Spielfeld {
    public static void main(String[] args) {

        char[][] room = {{P,.,.,.},{.,.,.,.}{.,.,.,.}{.,.,.,.}{.,.,.,.}{.,.,.,.}{.,.,.,.}{.,.,.,.}};

        System.out.println(room[0][0]);
        System.out.println(room[0][1]);
        System.out.println(room[0][2]);
        System.out.println(room[0][3]);
        System.out.println(room[1][0]);
        System.out.println(room[1][1]);
        System.out.println(room[1][2]);
        System.out.println(room[1][3]);
        System.out.println(room[2][0]);
        System.out.println(room[2][1]);
        System.out.println(room[2][2]);
        System.out.println(room[2][3]);
        System.out.println(room[3][0]);
        System.out.println(room[3][1]);
        System.out.println(room[3][2]);
        System.out.println(room[3][3]);
        System.out.println(room[4][0]);
        System.out.println(room[4][1]);
        System.out.println(room[4][2]);
        System.out.println(room[4][3]);
        System.out.println(room[5][0]);
        System.out.println(room[5][1]);
        System.out.println(room[5][2]);
        System.out.println(room[5][3]);
        System.out.println(room[6][0]);
        System.out.println(room[6][1]);
        System.out.println(room[6][2]);
        System.out.println(room[6][3]);
        System.out.println(room[7][0]);
        System.out.println(room[7][1]);
        System.out.println(room[7][2]);
        System.out.println(room[7][3]);

    }
}

Nun sieht das nicht sonderlich schön aus und es sind eine Menge Fehler drin, welche ich nach und nach abarbeiten muss. Nur würde ich gerne von euch Wissen ob mein Ansatz so in Ordnung ist, welche Fehler vorhanden sind und was man besser machen kann.
 

Meniskusschaden

Top Contributor
Mit System.out.print()kannst du etwas ohne Zeilenumbruch ausgeben, hier z.B. in der inneren Schleife. Der Zeilenumbruch kommt dann in der äußeren Schleife:
Java:
for (int line=0; line<room.length; line++) {
    for (int column=0; column<room[line].length; column++) {
        System.out.print(room[line][column]);
    }
    System.out.println();
}
 

prise1993

Mitglied
Wenn du alle Felder außer [0] [0] mit '.' befüllst wäre es auch sinnvoll, das in einer Schleife zu erledigen!
Code:
char[][] room = new char[4][8];

        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 8 ; j++) {
                room[i][j] = '.';
            }
        }
        room[0][0] = 'P';
 

actlyc

Mitglied
Also muss ich die einzelnen Chars alle mit Bsp. '.' ergänzen und kann die ganze Schreibarbeit auch kurz durch einer Schleife ersetzen.

Was genau bedeutet das ++ nach dem i?
 
X

Xyz1

Gast
Ich denke, der beste Weg könnte hier sein:
Java:
        Character[][] room = IntStream.range(0, 8).mapToObj(x -> IntStream.range(0, 4).mapToObj(y -> x == 0 && y == 0 ? 'P' : '.').toArray(Character[]::new)).toArray(Character[][]::new);
        System.out.println(Arrays.deepToString(room));
        System.out.println("/* oder */");
        Arrays.stream(room).forEach(array -> System.out.println(Arrays.toString(array)));

Wo dann die Ausgabe lautet:
Code:
[[P, ., ., .], [., ., ., .], [., ., ., .], [., ., ., .], [., ., ., .], [., ., ., .], [., ., ., .], [., ., ., .]]
/* oder */
[P, ., ., .]
[., ., ., .]
[., ., ., .]
[., ., ., .]
[., ., ., .]
[., ., ., .]
[., ., ., .]
[., ., ., .]

Der aufmerksame Leser wird vielleicht schon gemerkt haben, dass ich die Definition leicht geändert habe. Liegt einfach daran, dass Java 8 alles kleiner als int als int ansieht. :confused:
 

JStein52

Top Contributor
Character[][] room = IntStream.range(0, 8).mapToObj(x -> IntStream.range(0, 4).mapToObj(y -> x == 0 && y == 0 ? 'P' : '.').toArray(Character[]::new)).toArray(Character[][]::new);
System.out.println(Arrays.deepToString(room));
System.out.println("/* oder */");
Arrays.stream(room).forEach(array -> System.out.println(Arrays.toString(array)));
Das ist ja gut und schön. Aber der TE ist totaler Anfänger, d.h. er wird kein Wort davon verstehen.
 
X

Xyz1

Gast
Also .flatMap() geht nur mit >= int ...

Verschachtelte Schleifen und eine Redundanz ist doch auch nicht einfach zu verstehen! D. h., am besten gleich die richtige Schreibweise angewöhnen.

Programmieren ist nun mal kein Ponnyhof!
 
X

Xyz1

Gast
Vielleicht würd ich in dem Fall, das Array room sogar tatsächlich explizit aufschreiben ... etwas C&P ist ja nicht schlimm. :(

Bearbeitung: /**/ in String-Literalen ist auch etwas confusing indentation fällt mir gerade auf ... :(
 
Zuletzt bearbeitet von einem Moderator:

actlyc

Mitglied
In meiner Aufgabenstellung wird explizit verlangt, ein Array des Typ char zu erstellen. Trotzdem danke für den Ansatz :).
Habe jetzt das Spielfeld mit der Schleife von @prise1993 erstellt. Der Compiler führt aus aber das Programm gibt in der Konsole nichts aus.

Quellcode:
Java:
public class SpielfeldPrise {
    public static void main(String[] args) {
        char[][] room = new char[4][8];

                for (int i = 0; i < 4; i++) {
                    for (int j = 0; j < 8 ; j++) {
                        room[i][j] = '.';
                        room[0][0] = 'P';
                    }

                }
              
            room[0][0] = 'P';

            }          
        }
 
Zuletzt bearbeitet von einem Moderator:

VfL_Freak

Top Contributor
Moin,

mal davon angesehen, dass Du Dir das "room[0][0] = 'P'" in der for-Schleife sparen kannst, wird das Array bei mir sauber gefüllt ! ;)
Was erwartest Du denn sonst ?? Eine Ausgabe ??
Die müsstest Du dann aber noch programmieren ..... :rolleyes:

Gruß Klaus
 

actlyc

Mitglied
Habe das System.out.println eingefügt. Wenn ich nur das P ausgeben will funktioniert es. Der Compiler gibt jedoch bei der Ausgabe von i und j Fehler an.

Code:
public class SpielfeldPrise {
    public static void main(String[] args) {
        char[][] room = new char[4][8];

                for (int i = 0; i < 4; i++) {
                    for (int j = 0; j < 8 ; j++) {
                        room[i][j] = '.';
                        room[0][0] = 'P';
                    }

                }

                        System.out.println(room[0][0]);
                        System.out.println(room[int i][int j]);
            }

        }

Fehler:
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff} span.s1 {font-variant-ligatures: no-common-ligatures}

SpielfeldPrise.java:14: error: '.class' expected

System.out.println(room[int i][int j]);

^

SpielfeldPrise.java:14: error: ')' expected

System.out.println(room[int i][int j]);

^

SpielfeldPrise.java:14: error: '.class' expected

System.out.println(room[int i][int j]);

^

SpielfeldPrise.java:14: error: not a statement

System.out.println(room[int i][int j]);

^

SpielfeldPrise.java:14: error: ';' expected

System.out.println(room[int i][int j]);

^

SpielfeldPrise.java:14: error: illegal start of expression

System.out.println(room[int i][int j]);

^
 

actlyc

Mitglied
Habe " System.out.println(); " von @Meniskusschaden benutzt. Kriege nur leerzeichen bzw. gar nichts ausgespuckt. Kann mir jemand noch mal verständlich erklären, mit welchem System.out ich das Spielfeld aus Punkten und mit einem P bei [0][0] ausgeben kann.
 

VfL_Freak

Top Contributor
System.out.print( room[j] ); // ohne Zeilenende und -umbruch
System.out.println( room[j] ); // mit Zeilenende und -umbruch

und room[0][0] nur einmalig !!

Jetzt muss es nur noch an die richtigen Stellen :)
 

VfL_Freak

Top Contributor
sorry, irgendwie über der Editor meine Bearbeitung nicht .... :confused:

System.out.print( room[j] ); // ohne Zeilenende und -umbruch
System.out.println( room[j] ); // mit Zeilenende und -umbruch

und room[0][0] nur einmalig !!

Jetzt muss es nur noch an die richtigen Stellen :)
 

VfL_Freak

Top Contributor
hmm, im Editor steht bei mir "room[j]", aber nach dem Abschicken nur "room[j]" ????
Ich glaube, ich muss mal nen Neustart machen ... :(
 

prise1993

Mitglied
Java:
 public static void main(String[] args) {
        char[][] room = new char[4][8];

        for (int i = 0; i < 4; i++) {   //hier wird das ganze Array mit '.' gefüllt
            for (int j = 0; j < 8 ; j++) {
                room[i][j] = '.';
            }
        }
        room[0][0] = 'P';            //Feld 0/0 wird mit 'P' gefüllt muss nur
                                  // 1* gemacht werden deshalb nicht in for

        for (int i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (int j = 0; j < 8; j++) {
                System.out.print(room[i][j]);
            }
            System.out.println(); // Zeilenumbruch
        }

    }

Die erste Schleife befüllt, die zweite gibt aus! Du musst jedes Feld durchgehen!
Die Ausgabe sieht dann so aus:
Code:
P.......
........
........
........
 
X

Xyz1

Gast
In meiner Aufgabenstellung wird explizit verlangt, ein Array des Typ char zu erstellen. Trotzdem danke für den Ansatz :).
Wird aber keinen Unterschied geben ...
Naja, dann machs so (echtes char-Array erstellen und drucken):
Java:
        Character[][] room = IntStream.range(0, 8).mapToObj(x -> IntStream.range(0, 4).mapToObj(y -> x == 0 && y == 0 ? 'P' : '.').toArray(Character[]::new)).toArray(Character[][]::new);
        char[][] realFlatRoom = new char[8][4];
        IntStream.range(0, 8).forEach(i -> IntStream.range(0, 4).forEach(j -> realFlatRoom[i][j] = room[i][j]));
        // Jetzt gebe ich etwas aus...:
        // Stream.of(realFlatRoom).forEach(array -> System.out.println(Arrays.toString(array)));
        Stream.of(realFlatRoom).flatMap(Stream::of).forEach(System.out::println);
 

Flown

Administrator
Mitarbeiter
@DerWissende warum nicht gleich:
Java:
char[][] realFlatRoom = new char[4][8];
IntStream.range(0, realFlatRoom.length).forEach(i -> IntStream.range(0, realFlatRoom[i].length)
    .forEach(j -> realFlatRoom[i][j] = i == 0 && j == 0 ? 'P' : '.'));
Stream.of(realFlatRoom).flatMap(Stream::of).forEach(System.out::println);

@InfectedBytes es ist nicht wirklich ein Missbrauch, wenn mans richtig anstellt.

Aber die richtige Lösung für einen Anfänger, sind und bleiben nun mal 2 for-Schleifen.
Man sollte schon mal den bei den Grundlagen anfangen und das sind nunmal explizite und keine impliziten Iterationen.
 
X

Xyz1

Gast
@Flown : Mein Ziel war es, alles innerhalb einer Zeile zu schreiben; so hast du jetzt 2, Initialisierung und Zuweisung, wenn man so will.
@ all : Es mag Unfug sein, aber genau nach diese n Unfug wurde gefragt. :D
Außerdem war das auch für mich eine Trainingssession. Dass man Ponyhof nur mit einem 'n' schreibt, kann ich ja nicht wissen. :p
@prise1993 hat zwar etwas ganz Tolles geschrieben, aber ob es mittlerweile bei uns durch Code review kommt. o_O
Naja, für heute geb ich erst mal Ruhe. :oops:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
D 2D Char Array into String Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
A char array wird überschrieben Java Basics - Anfänger-Themen 6
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
I char Array to String Java Basics - Anfänger-Themen 3
C (char) Array einlesen Java Basics - Anfänger-Themen 8
H char-Array Java Basics - Anfänger-Themen 22
C Methoden String in char Array Java Basics - Anfänger-Themen 3
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
W Char Array bearbeiten Java Basics - Anfänger-Themen 6
Z char Array unbekanntes Zeichen selbstständig anlegen Java Basics - Anfänger-Themen 6
M Bestimmen, wie oft ein Char in einem Array vorkommt Java Basics - Anfänger-Themen 2
C char array-positionstausch Java Basics - Anfänger-Themen 6
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Best Practice String aufbau - Char Array oder Anhängen Java Basics - Anfänger-Themen 11
S For Schleife Char Array Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
B char Array mit ints Java Basics - Anfänger-Themen 7
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
M char Array füllen Java Basics - Anfänger-Themen 2
H ArrayList mit char- Array befüllen Java Basics - Anfänger-Themen 12
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
D Char Array ab bestimmter Stelle in neuem Speichern Java Basics - Anfänger-Themen 13
D Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen Java Basics - Anfänger-Themen 20
C Leerzeichen im char Array setzen Java Basics - Anfänger-Themen 33
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
N Methode die String in char-Array wandelt!! Java Basics - Anfänger-Themen 11
D Erste Schritte String Array in char Array umwandeln? Java Basics - Anfänger-Themen 1
E Char-Array zu String Java Basics - Anfänger-Themen 2
M Datentypen Char Array in String Array gibt Probleme Java Basics - Anfänger-Themen 10
M Char-Array Problem Java Basics - Anfänger-Themen 6
F Char Array splitten Java Basics - Anfänger-Themen 5
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
S char Array in Character KlassenArray? Java Basics - Anfänger-Themen 24
Semox Datentypen Einlesen von char in Array schlägt unerwartet fehl Java Basics - Anfänger-Themen 4
H Datentypen char array in int umwandeln Java Basics - Anfänger-Themen 9
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Datentypen Char Array in einen String verwandeln? Java Basics - Anfänger-Themen 2
J char array eintraege geben Java Basics - Anfänger-Themen 2
T Char Array in fremder Klasse Java Basics - Anfänger-Themen 20
S Char Array Werte in short variablen speichern Java Basics - Anfänger-Themen 4
P Array index per char suche auslesen Java Basics - Anfänger-Themen 3
M 2D char Array anzeigen Java Basics - Anfänger-Themen 4
G Zeichenkette in char-Array konvertieren Java Basics - Anfänger-Themen 13
M wie auf ein feld mit leerzeichen in einem char array prüfen? Java Basics - Anfänger-Themen 4
J String in char Array Java Basics - Anfänger-Themen 2
J Verständnisfrage zu Char-Array Java Basics - Anfänger-Themen 5
N String/char-array aus datei auslesen Java Basics - Anfänger-Themen 2
M char Array in int Array Java Basics - Anfänger-Themen 3
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
Jen Array einlesen, Int und Char Java Basics - Anfänger-Themen 57
J Char-Array mit variabler Länge zurückliefern. Java Basics - Anfänger-Themen 11
B Deklaration eines char-array Java Basics - Anfänger-Themen 2
F abc char array Java Basics - Anfänger-Themen 3
J char[] reverse Array Java Basics - Anfänger-Themen 9
G Zufällige Buchstaben in char-Array Java Basics - Anfänger-Themen 9
0 Häufigstes Zeichen in einem Char-Array ermitteln? Java Basics - Anfänger-Themen 6
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
T String als Array und Umwandlung in Char Java Basics - Anfänger-Themen 7
J StringBuffer-Objekt soll auf Char-Array zugreifen. Java Basics - Anfänger-Themen 4
F char to byte array Java Basics - Anfänger-Themen 8
S Testen ob ein Char Array noch nicht belegt ist! Java Basics - Anfänger-Themen 3
G Char Array konvertieren Java Basics - Anfänger-Themen 7
megachucky probleme mit einem char-array. Java Basics - Anfänger-Themen 6
H char Array in String Java Basics - Anfänger-Themen 7
E Ziffer in char-Array Java Basics - Anfänger-Themen 2
S String in char-Array einfügen Java Basics - Anfänger-Themen 8
G Array und Char Java Basics - Anfänger-Themen 3
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W char über die Konsole? Java Basics - Anfänger-Themen 7
C char c Java Basics - Anfänger-Themen 13
D String und char in String speichern Java Basics - Anfänger-Themen 5
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
P Methoden Namen trennen mit .substring(), char.At(), .lenght() Java Basics - Anfänger-Themen 8
A Datentyp char Java Basics - Anfänger-Themen 27
A Char und modulo Java Basics - Anfänger-Themen 8
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
D Datentypen Char deklaration Java Basics - Anfänger-Themen 4
J Java char.at() Probelm Java Basics - Anfänger-Themen 12
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
M Die länge von char Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben