Array im Array einzeln printen lassen?

Aljosha.k

Mitglied
Guten Tag und hallo erstmal an das ganze Forum, ich bin komplett neu hier und freue mich jetzt schon auf zukünftige eventuelle Zusammenarbeit. =)

Nun komme ich zu meiner Frage, ich bin als Java-Anfänger, gerade dabei mir ein 4-Gewinnt-Spiel auf Konsolen-Basis zu programmieren, nun stelle ich die 4x4 Zeilen in einem 2D Array dar und möchte gerne, jenes in die Konsole printen lassen. Mit deepToString habe ich es nun bewerkstelligt, das ganze Array in einer Zeile auszugeben, allerdings möchte ich gerne jedes "Level 2" Array in einer einzigen Zeile anzeigen lassen, um so ein "Feld" zu kreieren.
Wie kann ich das am besten machen?

MfG Aljosha
 

Aljosha.k

Mitglied
Habe es selber gerade schon hinbekommen, allerdings etwas "umständlicher" =D.
Code:
        for(int x = 3; x>=0; x--){
            for(int y = 3; y>=0; y--){
                System.out.print(arr[y][x]+" ");
            }
            System.out.println("");
        }

Anzeige:

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

Vielen dank trotzdem. =)
 

Cromewell

Top Contributor
Ist doch vollkommen ok so. Du musst aber nicht rückwärts zählen, aber mach es so, wie du es am besten findest ;) Und eine kleine Nebensache: beim println musst du nicht unbedingt "" machen ^^
 
X

Xyz1

Gast
Ähnliches hatte ich bereits vor ein paar Tagen in einem anderen Thema geschrieben:

Java:
    static void print(int i) {
        System.out.println("i = " + i);
        for (boolean[] ss : scheibe) {
            System.out.print('[');
            for (boolean s : ss) {
                if (s) {
                    System.out.print("X, ");
                } else {
                    System.out.print("O, ");
                }
            }
            System.out.println(']');
        }
        System.out.println("--- --- ---");
    }

(Vorsicht, wer den Originalbeitrag zitieren möchte, das crasht im Reichen-Texteditor euren Webbrowser ;) )

Das ist jetzt von der Ausgabe her nicht so schön, prinzipiell funktioniert's aber....
 

Aljosha.k

Mitglied
Vielen Dank, für die reiche Vielfalt an Ratschlägen, das ich nicht Rückwärts zählen muss, ist mir bewusst, ich mache es allerdings, da ich von "oben" nach "unten" zählen möchte, da die "Chips" ja auch so "fallen" würden. Den Tipp mit array.length werde ich übernehmen. =)
Ich möchte ungerne ein weiteres Thema dafür eröffnen, deswegen stelle ich die Frage mal hier herein.
Ich arbeite an mehreren "Projekten" gleichzeitig um das durch die unterschiedlichen Themen der Projekte gelernte Wissen auf die anderen anzuwenden.
In einem anderen Projekt möchte ich mir Sortier-Algorithmen wie den Bubblesort näher bringen, allerdings hapert es weniger an der Umsetzung dessen, als viel mehr an einem ganz rudimentären Problem, für welches ich Blind zu sein scheine.
Code:
        Scanner scan = new Scanner(System.in);
       
        System.out.println("Automatic/Manual(a/m)");
        System.out.print("Wählen sie eine Option:");
        if(scan.next()=="a"){
            for(int i = 0; i<10; i++){
                arr[i] = r.nextInt(50);
            }
            System.out.println(Arrays.toString(arr));
        }if(scan.next()=="m"){
            for(int i=1; i<10; i++){
                System.out.print("Wert"+i+";");
                arr[i] = scan.nextInt();
            }
        }

Sobald ich einen der beiden Auswahlen treffe, geschieht nichts mehr. Könnt ihr mir verraten woran das liegt?

MfG Aljosha
 

InfectedBytes

Top Contributor
Eigentlich ist es schon besser für sowas ein neues Thema zu erstellen.

Das ganze ist ein typisches Anfängerproblem. Das Problem liegt am Scanner. Eingaben werden sinnvollerweise nicht direkt zum Benutzer gegeben, sondern erst in einem Puffer gespeichert und erst bei einem bestimmten Ereignis (Enter Taste gedrückt) wird der ganze Inhalt des Puffers dem Benutzer gegeben. Das Problem ist aber, dass z.B. nextInt zwar solange wartet bis die Enter Taste gedrückt wurde, aber da die Methode ja nur an der Zahl interessiert ist, wird auf nur die Zahl aus dem Puffer entfernt. Die Enter Taste (also der Wert \n) bleibt jedoch im Puffer. Wenn du danach also nochmal ein nextInt machst, befindet sich eben noch \n im Puffer und liefert sofort den Inhalt des Puffers, immernoch \n.
Um das zu lösen, musst du das \n aus dem Puffer bekommen. Zwei sehr einfache Möglichkeiten wären folgende:
Möglichkeit 1: anstatt scan.nextInt() kannst du Integer.parseInt(scan.nextLine()) verwenden
Möglichkeit 2: nach jedem scan.nextInt() einmal scan.nextLine() aufrufen, um das \n wegzubekommen
 

Flown

Administrator
Mitarbeiter
Scanner::next liefert dir einen String und den vergleicht man mit String::equals und nicht mit ==!
Also:
Java:
if(scanner.next().equals("a")) { /* ... */ }
 

Aljosha.k

Mitglied
Eigentlich ist es schon besser für sowas ein neues Thema zu erstellen.

Das ganze ist ein typisches Anfängerproblem. Das Problem liegt am Scanner. Eingaben werden sinnvollerweise nicht direkt zum Benutzer gegeben, sondern erst in einem Puffer gespeichert und erst bei einem bestimmten Ereignis (Enter Taste gedrückt) wird der ganze Inhalt des Puffers dem Benutzer gegeben. Das Problem ist aber, dass z.B. nextInt zwar solange wartet bis die Enter Taste gedrückt wurde, aber da die Methode ja nur an der Zahl interessiert ist, wird auf nur die Zahl aus dem Puffer entfernt. Die Enter Taste (also der Wert \n) bleibt jedoch im Puffer. Wenn du danach also nochmal ein nextInt machst, befindet sich eben noch \n im Puffer und liefert sofort den Inhalt des Puffers, immernoch \n.
Um das zu lösen, musst du das \n aus dem Puffer bekommen. Zwei sehr einfache Möglichkeiten wären folgende:
Möglichkeit 1: anstatt scan.nextInt() kannst du Integer.parseInt(scan.nextLine()) verwenden
Möglichkeit 2: nach jedem scan.nextInt() einmal scan.nextLine() aufrufen, um das \n wegzubekommen
InfectedBytes, werde ich in der Zukunft berücksichtigen, allerdings hast du mich vermutlich falsch verstanden, wie du dem Code entnehmen kannst, wird nach einer Auswahl. Nun gebe ich das allererste mal ein a oder m ein und es geschieht nichts mehr, da dann nichts weiter im Code kommt, da scheinbar keine der Wirkungen, der if Abfragen, wirkt. Nur weiß ich nicht wieso....
 

Aljosha.k

Mitglied
Mein Code sieht momentan wie folgt aus:
Code:
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
       
        System.out.println("Automatic/Manual(a/m)");
        System.out.print("Wählen sie eine Option:");
        String s = scan.next();
        if(scan.next().equals("a")){
            scan.nextLine();
            for(int i = 0; i<10; i++){
                arr[i] = r.nextInt(50);
            }
            System.out.println(Arrays.toString(arr));
        }if(scan.next().equals("m")){
            scan.nextLine();
            for(int i=1; i<10; i++){
                System.out.print("Wert"+i+";");
                arr[i] = scan.nextInt();
            }
        }
 

InfectedBytes

Top Contributor
Lies dir deinen Code mal ganz genau durch.
Erst machst du String s = scan.next();
Diese Variable s ignorierst du aber, stattdessen prüfst du im If dann: scan.next().equals("a")
d.h. du liest schon wieder nen neuen Wert ein. Ob das if nun erfüllt wird oder nicht, danach machst du noch ein If mit if(scan.next().equals("m")
Erstmal solltest du nicht zwei if's nacheinander nutzen, sondern if(...){...} else if(...) {...}
Weiterhin solltest du auch deine Variable s verwenden, anstatt in jedem if einen weiteren Wert zu lesen.

Dazu kommen dann noch die bereits angemerkten Dinge, wie z.B. das Problem mit dem nextInt()
 

Aljosha.k

Mitglied
Ich habe den Code nun mal abgeändert und den "Manuellen"-Teil herausgenommen, es funktioniert einwandfrei, auch der Sort teil.
Die manuelle Zahlen Eingabe, möchte ich ersetzen durch "Einlesen" von .txt Dateien.


Hier mal der Code, wer ihn ausprobieren mag, oder noch einen Tipp kann.
Code:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;


public class main {
    static Random r = new Random();
    //static 
    static int v,vv,vvv;
   
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
   
        System.out.println("!Bubblesort!");
        System.out.print("Wieviele Zahlen:");
        int s = scan.nextInt();
        int arr[] = new int[s];
        System.out.print("Wert max.:");
        s = scan.nextInt();
       
        for(int i = 0; i<arr.length; i++){
            arr[i] = r.nextInt(s);
        }
       
        System.out.println("Unsorted:");
        System.out.println(Arrays.toString(arr));
       
        long t1 = System.currentTimeMillis();
       
        while(vv!=1){
            for(int i=arr.length-1; i>0; i--){
                if(arr[i] > arr[i-1]){
                    int sum = arr[i];
                    arr[i] = arr[i-1];
                    arr[i-1] = sum;
                    v=0;
                }
            }
            v++;
            if(v==arr.length){
                vv=1;
            }
            vvv++;
        }
       
        long t2 = System.currentTimeMillis();
       
        System.out.println("Sorted:");
        System.out.println(Arrays.toString(arr));
       
        System.out.println("Durchläufe:"+vvv);
        System.out.println("Benö. Zeit:"+(t2-t1)+"msec.");
        }
}
 

Aljosha.k

Mitglied
Ja haha das ist n kleiner Tick von mir, den Variablen, denen mir zum Zeitpunkt der Deklarierung kein Name zu einfällt v für value zu geben. Ändere ich nun auch mal. Danke JStein52 ist eine gute Idee, sonst geschehen Abbrüche und Fehlermeldungen.
 

Aljosha.k

Mitglied
Mit Lokal ist gemeint, dass ich sie in die Methode schreibe in welcher sie Vorkommen oder? Ich dachte static wäre sozusagen "Klassen"-intern. Gibt es dafür kein Attribut(?), ist mir lieber alle auf einem Fleck und somit auf einen Blick zu haben.
 

mrBrown

Super-Moderator
Mitarbeiter
Mit Lokal ist gemeint, dass ich sie in die Methode schreibe in welcher sie Vorkommen oder? Ich dachte static wäre sozusagen "Klassen"-intern. Gibt es dafür kein Attribut(?), ist mir lieber alle auf einem Fleck und somit auf einen Blick zu haben.
static heißt, der Wert ist nicht an eine Instanz gebunden, sondern "global" und es gibt sie genau ein mal.
Wenn du mit Klassen-Intern meinst, das der Wert nur aus der eigenen Klasse "gesehen" werden kann, meinst du private. Überall sichtbar ist public, im eigenen package und für alle Erben sichtbar wäre protected, und so wie du es hattest, ohne modifier, ist sichtbar fürs eigene Package.

Besser ist, den Scope so klein wie möglich zu haben ;) So wie es aktuell ist, könnten zB während deine Methode läuft, eine andere Klasse mittendrin alle v's ändern, und deine Methode würde nicht funktionieren ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E String Zahlenkette einzeln in Array Java Basics - Anfänger-Themen 13
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null 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
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57

Ähnliche Java Themen

Neue Themen


Oben