initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp

Cookiieee

Mitglied
Hallo, ist die Zeile 6, so richtig?
Ich habe das Programm auch schon laufen lassen, aber da steht dass da "public static void main(String [] args)" fehlt, kommt, dass dann nach "public class Framed" oder wo?

Aufgabenstellung:
Unten ist ein fast vollständiges Programm gegeben. Das Programm soll zwei Vierecke bestehend aus den Buchstaben 'A' (Rand) und 'B' (Füllung) ausgeben.

In der ersten "Doppel-Schleife" wird bereits ein Viereck ausgegeben und dabei in ein 2D-Array gespeichert. In der zweiten "Doppel-Schleife" wird dann der Inhalt dieses Arrays ausgegeben.

Die Aufgabe besteht nun lediglich darin in Zeile 6 ein Array namens "array" richtiger Größe und von geeignetem Datentyp zu initialisieren, damit das Programm fehlerfrei und wie beschrieben abläuft.


Java:
public class Framed {
    public static int breite = 6;
    public static int hoehe = 3;
   
    public static void frame() {
        //Hier soll das Array deklariert und initialisiert werden!
        for(int i = 0; i <= (hoehe+1); i++) {
            for(int j = 0; j <= (breite+1); j++) {
                if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
                    System.out.print("A");
                    array[j][i] = 'A';
                }
                else {
                    System.out.print("B");
                    array[j][i] = 'B';
                }
            }
            System.out.print("\n");
        }

        System.out.print("\n---Und hier jetzt nochmal das Viereck aus dem Array---\n\n");

        for(int i = 0; i <= (hoehe+1); i++){
            for(int j = 0; j <= (breite+1); j++){
                System.out.print(array[j][i]);
            }
            System.out.print("\n");
        }
    }
}


Bearbeitetes Programm:

Java:
public class Viereck {
            public static int breite = 6;
            public static int hoehe = 3;
           
            public static void frame() {
                char[][] array = new char[breite][hoehe];
                for(int i = 0; i <= (hoehe+1); i++) {
                    for(int j = 0; j <= (breite+1); j++) {
                        if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
                            System.out.print("A");
                            array[j][i] = 'A';
                        }
                        else {
                            System.out.print("B");
                            array[j][i] = 'B';
                        }
                    }
                    System.out.print("\n");
                }

                System.out.print("\n---Und hier jetzt nochmal das Viereck aus dem Array---\n\n");

                for(int i = 0; i <= (hoehe+1); i++){
                    for(int j = 0; j <= (breite+1); j++){
                        System.out.print(array[j][i]);
                    }
                    System.out.print("\n");
                }
            }
        }
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Und du solltest einmal anschauen, auf welche Elemente in den Schleifen zugegriffen wird. Wie groß muss das Array dann sein?
 

Lion.King

Aktives Mitglied
Es kommen folgende Fehlermeldungen, wenn man das Programm mit der main-Methode laufen lässt:
/Viereck.java:3: error: illegal start of expression
public static int breite = 6;
^
/Viereck.java:33: error: class, interface, or enum expected
}
^
2 errors

Wie kann man sie beheben?
 
K

kneitzel

Gast
Zeig uns die ganze Datei - vermutlich ist der Code in keiner Klasse oder so ...

Und zum Posten von Code bitte den Knopf </> oberhalb des Eingabebereichs nutzen.
 

Cookiieee

Mitglied
Und du solltest einmal anschauen, auf welche Elemente in den Schleifen zugegriffen wird. Wie groß muss das Array dann sein?
Also bei mir kommt für diesen Code:
Java:
public class Viereck {
    
    public static void main(String[] args) {
            public static int breite = 6;
            public static int hoehe = 3;
            
            public static void frame() {
                char[][] array = new char[breite][hoehe];
                for(int i = 0; i <= (hoehe+1); i++) {
                    for(int j = 0; j <= (breite+1); j++) {
                        if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
                            System.out.print("A");
                            array[j][i] = 'A';
                        }
                        else {
                            System.out.print("B");
                            array[j][i] = 'B';
                        }
                    }
                    System.out.print("\n");
                }

                System.out.print("\n---Und hier jetzt nochmal das Viereck aus dem Array---\n\n");

                for(int i = 0; i <= (hoehe+1); i++){
                    for(int j = 0; j <= (breite+1); j++){
                        System.out.print(array[j][i]);
                    }
                    System.out.print("\n");
                }
            }
        }

Diese Fehlermeldung:
javac /tmp/ZdYi4mK5Co/Viereck.java
/tmp/ZdYi4mK5Co/Viereck.java:4: error: illegal start of expression
public static int breite = 6;
^
1 error
 

mihe7

Top Contributor
@Cookiieee die Sache ist ganz einfach:

Java:
public class Viereck {
    // Klassenattribute
    public static int breite = 6;
    public static int hoehe = 3;
            
    // main-Methode (Programmeinstiegspunkt)
    // wird beim Programmstart automatisch aufgerufen
    public static void main(String[] args) {
        frame(); // rufe frame auf
    }

    public static void frame() {
        // Dein Code.
    }
}
 

Cookiieee

Mitglied
Ahh okay, jetzt verstehe ich Danke dir!! Habe das gerade auch so ergänzt und laufen lassen und da ist immer noch eine Fehlermeldung
und zwar das, weiß ehrlich gesagt nicht, was das aussagt:🙃

AAAAAAAException in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at Viereck.frame(Viereck.java:16)
at Viereck.main(Viereck.java:7)

Das ist der Code:

Java:
public class Viereck {
    
            public static int breite = 6;
            public static int hoehe = 3;
            
            public static void main(String[] args) {
                frame();
            }
            
            public static void frame() {
                char[][] array = new char[breite][hoehe];
                for(int i = 0; i <= (hoehe+1); i++) {
                    for(int j = 0; j <= (breite+1); j++) {
                        if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
                            System.out.print("A");
                            array[j][i] = 'A';
                        }
                        else {
                            System.out.print("B");
                            array[j][i] = 'B';
                        }
                    }
                    System.out.print("\n");
                }

                System.out.print("\n---Und hier jetzt nochmal das Viereck aus dem Array---\n\n");

                for(int i = 0; i <= (hoehe+1); i++){
                    for(int j = 0; j <= (breite+1); j++){
                        System.out.print(array[j][i]);
                    }
                    System.out.print("\n");
                }
            }
        }
 

mihe7

Top Contributor
und zwar das, weiß ehrlich gesagt nicht, was das aussagt:🙃
Die Fehlermeldung sagt, dass Du auf Index 6 eines Arrays zugegriffen hast, das nur 6 Elemente enthält. Hintergrund ist, dass der Index (nicht nur) in Java ab 0 gezählt wird. Ein Array der Größe 6 hat also Indizes von 0 bis 5. Versuchst Du auf -1 oder auf 6, 10 oder 100 zuzugreifen, bekommst Du eine ArrayIndexOutOfBoundsException (übersetzt etwa ArrayIndexAußerhalbDerGrenzenAusnahme).
 

Cookiieee

Mitglied
Sorry für die vielen Fragen..
Die Fehlermeldung ist ja bei 7 und 16, was muss ich denn hinzufügen oder wegmachen um diesen Error wegzubekommen?
 

mihe7

Top Contributor
Die Fehlermeldung ist ja bei 7 und 16,
Ne, das ist ein Stack-Trace, der den Aufrufstapel anzeigt:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at Viereck.frame(Viereck.java:16)
at Viereck.main(Viereck.java:7)
D. h. in Zeile 16 trat die Ausnahme in Methode frame() auf und diese Methode wurde von main aus in Zeile 7 aufgerufen.

Das Problem liegt also nur in Zeile 16:
Java:
array[j][i] = 'A';
Hier ist j oder i eben ein ungültiger Index. Schau Dir mal die Größe Deines Arrays und Deine Bedingungen in den for-Schleifen und if-Statements an.
 
K

kneitzel

Gast
Und du solltest einmal anschauen, auf welche Elemente in den Schleifen zugegriffen wird. Wie groß muss das Array dann sein?
Option 1:
Es wird in den Schleifen auf die Array Elemente i / j zugegriffen.

Daher schau einmal, bis wohin diese Schleifen zählen. Dann hast du den höchsten Index und kannst die Größe bestimmen.

Option 2:
Was genau macht der Code? Hast Du Dir da einmal überlegt? Wenn man sich die Problemdomain überlegt, dann kommt man auch auf so Dinge wie die richtige Größe.

Option 3:
Wenn man absolut keine Ahnung hat, dann könnte man einfach das Array vergrößern.
Die 6 kommt von der Breite, also erzeugt man erst einmal ein Array mit Breite 7 ...
Das ist aber natürlich die schlechteste aller Optionen. Null Verständnis, was der Code machen soll ...: null Verständnis, was der Code macht ... Korrektheit ist nur dadurch definiert, dass es keine Exception gibt.
Aber bei der Aufgabe ist auch der Ansatz möglich.
 

Cookiieee

Mitglied
Nehmen wir mal Dein i:

Das läuft bis inkl. hoehe+1, Dein Array hat aber eine Größe hoehe. Wie soll das funktionieren?
Ahhhh okay jetzt verstehe ich, Dankeschööön!!!

jetzt kommt das raus...

AAAAAAA
ABBBBBB
ABBBBBB
ABBBBBB

---Und hier jetzt nochmal das Viereck aus dem Array---

AAAAAAAException in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 7
at Viereck.frame(Viereck.java:27)
at Viereck.main(Viereck.java:6)

Habe es auch schon korrigiert, müsste das dann nicht schon so gehen oder was mache ich wieder falsch hahah?🙃

Java:
public class Viereck {
   
            public static int breite = 6;
            public static int hoehe = 3;
            public static void main(String[] args) {
                frame();}
            public static void frame() {
                char[][] array = new char[breite+1][hoehe+1];
                for(int i = 0; i < (hoehe+1); i++) {
                    for(int j = 0; j < (breite+1); j++) {
                        if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
                            System.out.print("A");
                            array[j][i] = 'A';
                        }
                        else {
                            System.out.print("B");
                            array[j][i] = 'B';
                        }
                    }
                    System.out.print("\n");
                }

                System.out.print("\n---Und hier jetzt nochmal das Viereck aus dem Array---\n\n");

                for(int i = 0; i <= (hoehe+1); i++){
                    for(int j = 0; j <= (breite+1); j++){
                        System.out.print(array[j][i]);
                    }
                    System.out.print("\n");
                }
            }
        }
 
K

kneitzel

Gast
Also ich weiss nicht, wieso ich überhaupt etwas schreibe ... 3 Optionen habe ich genannt und die interessieren Dich überhaupt nicht ...

a) Vielleicht einfach noch eins größer machen?

b) Wenn du ein Fehld mit Breite x Höhe hast und da links/rechts und oben/unten jeweils ein Feld mehr brauchst: Dann ist es jeweils +2!

c) Wenn die schleife bis einschließlich breite+1 / hoehe+1 läuft und ein Array Indizes von 0 ... size-1 hat, dann brauchst Du für ein index breite+1 ein Array der größe breite+2. Ebenso bei der hoehe.
 

Cookiieee

Mitglied
Das soll ja auch so bleiben. Es war ein Fehler von ihm, an dem Code an der Stelle etwas zu ändern. Erkennt man ja auch am Inhalt in der ersten verschachtelten Schleife:
if((i == 0 || j == 0) || ( i == (hoehe+1) || j == (breite+1))) {
Wieso mein Fehler...? 😅
Der Code wurde mir so zugeteilt und ich musste, wie oben schon beschrieben nur die 6.Zeile erstellen und somit wäre das Programm fertig..
 
K

kneitzel

Gast
in #1 war es noch:
Java:
    public static void frame() {
        //Hier soll das Array deklariert und initialisiert werden!
        for(int i = 0; i <= (hoehe+1); i++) {
            for(int j = 0; j <= (breite+1); j++) {

in #19 war es dann:
Java:
            public static void frame() {
                char[][] array = new char[breite+1][hoehe+1];
                for(int i = 0; i < (hoehe+1); i++) {
                    for(int j = 0; j < (breite+1); j++) {

Du hast also nicht nur den Kommentar ersetzt sondern Du hast auch aus den beiden <= ein < gemacht. Und genau das sollst Du eben nicht machen, sondern lediglich (wie Du richtig geschrieben hast):
wie oben schon beschrieben nur die 6.Zeile erstellen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
X Attribut initialisieren Java Basics - Anfänger-Themen 1
M Deklarieren und Initialisieren von Arrays Java Basics - Anfänger-Themen 3
Dawinartor Erste Schritte Statisch, Initialisieren, Deklarieren, ... Java Basics - Anfänger-Themen 1
L Variable in If-Statement initialisieren Java Basics - Anfänger-Themen 4
C Verschachteltes Array initialisieren Java Basics - Anfänger-Themen 6
D Vektoren Initialisieren Java Basics - Anfänger-Themen 1
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
T Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren Java Basics - Anfänger-Themen 14
J Array ausserhalb der Methode initialisieren Java Basics - Anfänger-Themen 4
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
M Java Arrays mit Werten initialisieren Java Basics - Anfänger-Themen 3
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
V Tastatur initialisieren JFrame Probleme Java Basics - Anfänger-Themen 6
L Arrays richtig initialisieren Java Basics - Anfänger-Themen 1
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
B Rekursion - Variable initialisieren Java Basics - Anfänger-Themen 2
T Variable deklarieren, ohne zu initialisieren... Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
K Objekte im Konstruktor initialisieren Java Basics - Anfänger-Themen 3
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
K Array mit Double initialisieren Java Basics - Anfänger-Themen 10
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
J StringBuilder initialisieren und Löschbefehl Java Basics - Anfänger-Themen 20
M Mehrdimensionales Array initialisieren Java Basics - Anfänger-Themen 3
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
N Mit Kontrukor der Oberklasse lokale Variable initialisieren Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
C Zweidimensionales String Array initialisieren Java Basics - Anfänger-Themen 2
D List<String[]> initialisieren Java Basics - Anfänger-Themen 4
D Problem mit Objekten Vererbung deklarieren initialisieren usw Java Basics - Anfänger-Themen 12
B Arrays initialisieren Java Basics - Anfänger-Themen 2
S Variable Initialisieren, aber wo? Java Basics - Anfänger-Themen 36
Y Array initialisieren, nach der Abfrage? Java Basics - Anfänger-Themen 3
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
N ARRAY initialisieren Java Basics - Anfänger-Themen 5
T Mehrere Variablen gleichzeitig initialisieren Java Basics - Anfänger-Themen 2
F Dreidimensionales Array? Wie initialisieren? Java Basics - Anfänger-Themen 5
Forlan OutputStream Initialisieren Java Basics - Anfänger-Themen 4
Ham Verhalten beim Initialisieren von Arrays Java Basics - Anfänger-Themen 16
N Initialisieren einer zufälligen Matrix Java Basics - Anfänger-Themen 12
A log4j - wie kann ich im Quellcode initialisieren statt in der properties-Datei? Java Basics - Anfänger-Themen 2
G Variablen initialisieren vor super() Java Basics - Anfänger-Themen 8
J ArrayLists initialisieren Java Basics - Anfänger-Themen 21
S Array initialisieren Java Basics - Anfänger-Themen 8
MQue ArrayList initialisieren Java Basics - Anfänger-Themen 17
G GUI in main Initialisieren Java Basics - Anfänger-Themen 15
M 2d string array initialisieren ohne neu String Java Basics - Anfänger-Themen 3
B Variable mit Methode initialisieren Java Basics - Anfänger-Themen 11
A char variable deklarieren und nicht initialisieren Java Basics - Anfänger-Themen 10
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
W Feld von boolean in main initialisieren. Java Basics - Anfänger-Themen 4
G Konstante im Konstruktur initialisieren Java Basics - Anfänger-Themen 8
G ArrayList initialisieren Java Basics - Anfänger-Themen 25
M Zweidimensionales String-Array initialisieren Java Basics - Anfänger-Themen 6
O String global initialisieren Java Basics - Anfänger-Themen 5
B ArrayList mit Startwerten initialisieren Java Basics - Anfänger-Themen 8
V Zweidimensionalen Array initialisieren Java Basics - Anfänger-Themen 3
G String Array initialisieren Java Basics - Anfänger-Themen 4
R Klassenvariable initialisieren Java Basics - Anfänger-Themen 9
A String als Nullstring initialisieren Java Basics - Anfänger-Themen 2
F double[][] initialisieren Java Basics - Anfänger-Themen 9
G Arrays initialisieren Java Basics - Anfänger-Themen 8
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
G Wie Array initialisieren? Java Basics - Anfänger-Themen 10
H HashMap initialisieren<Key, Value>? Java Basics - Anfänger-Themen 9
N Feld initialisieren Java Basics - Anfänger-Themen 9
M 2-dimensionales Array initialisieren Java Basics - Anfänger-Themen 5
W 50 Variablen in Schleife initialisieren Java Basics - Anfänger-Themen 6
S String mit Konstruktor (per Übergabe) initialisieren Java Basics - Anfänger-Themen 10
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben