Arrays übergeben, Mehrdimensionale Arrays Zeilenabtrennung in schleifen

Fynx_HD

Mitglied
Jo, blutiger Anfänger hier. Ich sitze heute seit exakt 4 Stunden an einer Aufgabe. Ich komm in der Aufgabe nicht weiter. Daher meine alltime Zeit ,die ich in diese ultra simple Aufgabe gesteckt habe circa. 12 Stunden betragen, wollte ich mal nach Hilfe fragen und mich erkundigen ob das normal ist das man so lange fürs reine verständis braucht. ^^ Nun zur Aufgabe: Zusammengefasst soll man ein Spielfeld in einem 2 dimensionalen Array erstellen und in diesem 3x3 Array 9 Zahlen einlesen lassen und dann abgleichen lassen ob die Zahlen in einer Reihe die selbe sind. Ich bitte aber am besten nur um kleine Tipps und um keine Komplettlösung daher ich mir die Aufgabe sonst von Anfang an schenken hätte können. x)


Java:
import java.util.Scanner;

public class Aufgabe13 {

    public static void main(String[] args) {
        int[][] Spielfeld = new int[3][3];
        int[] row = new int[3];
        Scanner Scanni = new Scanner(System.in);
      
            System.out.println("Bitte gebe alle Zahlen des Spielfelds nacheinander ein : ");
      
      
          
            for(int i = 0; i < Spielfeld.length; i++) {
                for(int j = 0; j < Spielfeld.length; j++) {
                    Spielfeld[i][j] = Scanni.nextInt();    }    }       
            for(int i = 0; i < Spielfeld.length; i++) {
                for(int j = 0; j < Spielfeld.length; j++) {
                        three(Spielfeld[i][j]);    } }
       
    }
       
               
    public static boolean three(int Spielfeld) {   
    int[][] SpielfeldH = new int[3][3];
        for(int i = 0; i < SpielfeldH.length; i++) {
            for(int j = 0; j < SpielfeldH.length; j++) {
                SpielfeldH[i][j] = Spielfeld;
            }
        }
        System.out.println(SpielfeldH[2][2]);
   
        return false;
        }
}
 
Zuletzt bearbeitet von einem Moderator:
Beste Antwort
Als erstes ein Hinweis zum Posten von Code: Diesen bitte immer in Code Tags posten. Dazu einfach den Knop </> links oberhalb des Eingabebereiches nutzen. (Ansonsten werden paar Textelemente interpretiert z.B ein [i] wertet das Forum as Befehl, kursiven Text zu starten.)

Also ein erster Hinweis zu den verschachtelten Schleifen: Da das Kursive erst bei der Zuweisung startet, hast Du sowohl bei den Schleifen mit i als auch bei j die Länge des äußeren Arrays. Das funktioniert hier, aber wenn das Spielfeld nicht quadratisch wäre, würde es ein Problem ergeben. 2D Arrays sind Arrays von Arrays. Die innere Schleife nimmt also die Länge von Spielfeld[i].length

Dann zu der Aufgabe:
Was musst Du den prüfen, wenn Du wissen...

KonradN

Super-Moderator
Mitarbeiter
Als erstes ein Hinweis zum Posten von Code: Diesen bitte immer in Code Tags posten. Dazu einfach den Knop </> links oberhalb des Eingabebereiches nutzen. (Ansonsten werden paar Textelemente interpretiert z.B ein [i] wertet das Forum as Befehl, kursiven Text zu starten.)

Also ein erster Hinweis zu den verschachtelten Schleifen: Da das Kursive erst bei der Zuweisung startet, hast Du sowohl bei den Schleifen mit i als auch bei j die Länge des äußeren Arrays. Das funktioniert hier, aber wenn das Spielfeld nicht quadratisch wäre, würde es ein Problem ergeben. 2D Arrays sind Arrays von Arrays. Die innere Schleife nimmt also die Länge von Spielfeld[i].length

Dann zu der Aufgabe:
Was musst Du den prüfen, wenn Du wissen willst, ob die Zahlen in einer Reihe gleich sind?

Das kannst Du mit dem festen Spielfeld direkt in Worten sagen: Ist 1. Zahl = 2. Zahl und 2. Zahl = 3. Zahl?
Mit de Hinweis "Arrays von Arrays" solltest Du an die Arrays jeder Reihe heran kommen können um dann diese Prüfung durchzuführen.

Wenn es nun für beliebig große Reihen funktionieren soll:
Überlege Dir, was sich ändert beim Vergrößern. Schreib die Prüfungen auf für 3 Zahlen, für 4 Zahlen, für 5 Zahlen ... Siehst Du eine Gesetzmäßigkeit? Kannst Du in Worten formulieren, was zu tun ist? Also es so formulieren, dass jeder die Prüfung machen kann, auch wenn Du ihm nicht die Aufgabe selbst erklärst. Wenn Du sowas hast, dann kannst Du es in Code umsetzen.

Und ein weiterer Hinweis teile es auf:
  • Kannst Du eine Methode schreiben, die nur die Reihe prüft? Es kommt also als Parameter ein eindimensionales Array und du prüfst nur, ob alle Zahlen gleich sind.
  • Dann kannst Du eine Methode schreiben, die bei einem 2D Array alle Reihen prüft und die andere Methode dazu nutzt.
==> So unterteilte Aufgaben sind dann später in der Regel einfacher anzupassen.
 
Beste Antwort

Fynx_HD

Mitglied
Danke für die Antwort. ^^ Zur Überprüfung ist mir gestern tatsächlich noch folgendes eingefallen:

Java:
if(Spielfeld[0][1] == Spielfeld[0][2] && Spielfeld[0][1] == Spielfeld[0][0] && Spielfeld[0][2] == Spielfeld[0][0]) {
                System.out.println("true"); }
                else { System.out.println("false");    }
                if(Spielfeld[1][1] == Spielfeld[1][2] && Spielfeld[1][1] == Spielfeld[1][0] && Spielfeld[1][2] == Spielfeld[1][0]) {
                     System.out.println("true");    }
                    else { System.out.println("false");    }
                    if(Spielfeld[0][1] == Spielfeld[2][2] && Spielfeld[2][1] == Spielfeld[2][0] && Spielfeld[2][2] == Spielfeld[2][0]) {
                        System.out.println("true");    }
                        else { System.out.println("false");    }

Leider steht auch in der Aufgabe das ich es mit einer Methode überprüfen lassen soll, was mich wieder zu dem Problem zurückwirft das ich nicht weiß wie ich arrays irgendeiner Art übergeben soll..

-"Also ein erster Hinweis zu den verschachtelten Schleifen: Da das Kursive erst bei der Zuweisung startet, hast Du sowohl bei den Schleifen mit i als auch bei j die Länge des äußeren Arrays. Das funktioniert hier, aber wenn das Spielfeld nicht quadratisch wäre, würde es ein Problem ergeben. 2D Arrays sind Arrays von Arrays. Die innere Schleife nimmt also die Länge von Spielfeld.length"

Was damit gemeint ist hab ich leider auch nicht so ganz verstanden, werde aber noch ein wenig über den Teil mit arrays von arrays nachdenken.
Danke nochmal! :)
Edit: Ultra wichtig fürs verständnis: Habe gelernt das Arrays immer bei 0 beginnen, und daher das 3. Element als 2. angesprochen wird. Nur bei mir muss ich ein array erstellen welches [3][3] groß ist um ein 3x3 spielfeld zu haben. Müsste das spielfeld bei [2][2] nicht 3x3 sein?
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Du willst testen ob alle werte einere Reihe gleich sind.
Dann hole dir doch vor der innrren Scheife den ersten Wert speichere ihn in einer Variablen. Inder Schleife prüft du ob die variable und der nechste wert gleich ist.
Wenn nein bist du schon am ende und kanst die Schleife verlassen.
Vorher machst du deine Ausgabe.
Dann geht es ja in die äußere Schleife zurück und die nechste Zeile ist dran.

Die äußere Schleife zählt die zeilen die innere die spalten.
So nun überlege wo deine Schleife starten musd damit du kein overFlow bekommst. Denn den ersten wert hast du scho in der Variablen.

Male es dir mit Stift und Papier auf.
 
Zuletzt bearbeitet:

graai

Mitglied
Hii @Fynx_HD ich glaube auch gena wie bei mir, brauchst du auch zwei3 Schleifen um zu zehen ob in einer Spalte nur gleiche Zahlen stehen. Vielleicht brauchst du auch drei, wenn die Reihen hauch noch geprüft werden.
 

Baerdoc

Mitglied
...

Leider steht auch in der Aufgabe das ich es mit einer Methode überprüfen lassen soll, was mich wieder zu dem Problem zurückwirft das ich nicht weiß wie ich arrays irgendeiner Art übergeben soll..

...
Weißt Du denn, wie Du einen einfachen Datentyp einer Methode übergeben kannst, zum Beispiel eine Integervariable?
Ansonsten gucke mal in Deine Main-Methode, dort wird auch ein Array übergeben für den Datentyp String.
 

Fynx_HD

Mitglied
Danke für die ganzen Kommentare! Das Endergebnis sieht jetzt so aus und funktioniert auch tatsächlich.
Java:
import java.util.Scanner;

public class Aufgabe13 {

    public static void main(String[] args) {
        int[][] Spielfeld = new int[3][3];
        Scanner Scanni = new Scanner(System.in);
            System.out.println("Bitte gebe alle Zahlen des Spielfelds nacheinander ein : ");
    
            for(int i = 0; i < Spielfeld.length; i++) {
                for(int j = 0; j < Spielfeld.length; j++) {
                    Spielfeld[i][j] = Scanni.nextInt();}    }       
                
            
                        System.out.println(three(Spielfeld));
    }
                        
    public static boolean three(int[][] spielfeld) {   
    int iff = 0;
        for(int i = 0; i < 3;) {
    if(spielfeld[i][1] == spielfeld[i][2] && spielfeld[i][1] == spielfeld[i][0] && spielfeld[i][2] == spielfeld[i][0]) {
        iff = 1; }    i++;}
            
            if(iff == 1)
            { return true;}
            else { return false;
        }
        
        }
}
[3][3] heißt das es 3x3 gross ist.
Zugriff ist von 0,1,2 als auch drei
Bei Zugriff mit [3], würdest du eine fehlermelung bekommen.

[2][2] ist das ende des Arrays
Leider versteh ich das immernoch nicht so richtig. Wenn ich also 3x3 angebe und das in Wahrheit 0 , 1 und 2 ist, gibt es doch das Problem dass falls ich das 1. Element aufrufen möchte das doch 0 und 0 ist statt 1 und 1. Dann komm ich doch bei 3x3 auf 4x4 Elemente oder nicht?
 

Robert Zenz

Top Contributor
Leider versteh ich das immernoch nicht so richtig. Wenn ich also 3x3 angebe und das in Wahrheit 0 , 1 und 2 ist, gibt es doch das Problem dass falls ich das 1. Element aufrufen möchte das doch 0 und 0 ist statt 1 und 1. Dann komm ich doch bei 3x3 auf 4x4 Elemente oder nicht?
Nein, das kommt von der Hardware hoch beziehungsweise wie man Speicher verwaltet.

Java:
int[] arraytest = new int[3];

Allokiert den Speicherbereich fuer drei `int`s. Wenn du nun auf das erste Element willst brauchst du einen Versatz von 0 im Speicher. Nehmen wir mal folgendes Beispiel an Speicher an:

Code:
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

Unser Speicher hier ist Leer. Nun allokieren wir unser int Array:

Code:
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
   ^ <--  unser int arra
00 00 00 00 00 00 00 00
y hier   --> ^
00 00 00 00 00 00 00 00

Es beginnt auf der "dritten Zeile" unseres Speichers. Wenn du nun das erste Element aus diesem Array haben willst, brauchst du einen Versatz von 0 zur Speicher-Adresse:

Code:
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
   ^----1----^
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

Willst du das zweite Element aus dem Array, brauchst du einen Versatz von einer Element Laenge (hier vier Bytes):

Code:
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
               ^----2--
00 00 00 00 00 00 00 00
-^
00 00 00 00 00 00 00 00

Und so weiter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
F Arrays in Methode übergeben Java Basics - Anfänger-Themen 11
babel Datenbank Daten direkt an die Tabelle übergeben ohne Arrays Java Basics - Anfänger-Themen 9
R Teil eines Arrays übergeben Java Basics - Anfänger-Themen 1
R Einer Methode mit Arrays Werte übergeben Java Basics - Anfänger-Themen 6
K arrays übergeben... Java Basics - Anfänger-Themen 2
DrahtEck Arrays und While-Loop Java Basics - Anfänger-Themen 10
richis-fragen Kann Arrays.stream() auch auf Objekte angewant werden? Java Basics - Anfänger-Themen 10
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
E Zinsrechnung mithilfe von Arrays Java Basics - Anfänger-Themen 12
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
H Arrays befüllen Java Basics - Anfänger-Themen 43
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
D Arrays Java Basics - Anfänger-Themen 9
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
N Arrays Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
U zwei 2D arrays auf gleich sein überprüfen Java Basics - Anfänger-Themen 14
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
A Arrays aufsummieren Java Basics - Anfänger-Themen 11
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
S Arrays aneinanderketten Java Basics - Anfänger-Themen 20
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
D Verschlüsslungsaufgabe / Arrays Java Basics - Anfänger-Themen 6
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
J Methoden Mehrdimensionale Arrays übereinander legen Java Basics - Anfänger-Themen 5
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Zeppi Arrays[i] Java Basics - Anfänger-Themen 7
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J B-Sprache mit Arrays ausführen Java Basics - Anfänger-Themen 18
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
K Sudoku mit 2D Arrays Java Basics - Anfänger-Themen 19
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
1 Arrays Java Basics - Anfänger-Themen 7
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
H Ein gegebenes Int Array zu Zwei Arrays zurück geben Java Basics - Anfänger-Themen 6
J 2D Arrays summieren Java Basics - Anfänger-Themen 21
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
A Java.util.Arrays Java Basics - Anfänger-Themen 15
T Methodenverknüpfung mit Arrays Java Basics - Anfänger-Themen 4
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
B Arrays Java Basics - Anfänger-Themen 4
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben