Array deklarieren und initialisieren

Lion.King

Aktives Mitglied
Hallo,

ich möchte in Zeile 6 ein Array namens "array" richtiger Größe und von geeignetem Datentyp initialisieren, damit das Programm fehlerfrei abläuft und ich dieses Ergebnis in der Ausgabe erhalte:

Resultat.PNG

Das ist der bisherige Code, den ich geschrieben habe:

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");
        }
    }
}

Beim Kompileren wurden 3 Fehler angezeigt, die glaube ich deshalb entstanden sind, weil ich mein Array noch nicht richtig deklariert habe:

Framed.java:11: error: cannot find symbol
array[j] = 'A';
^
symbol: variable array
location: class Framed
Framed.java:14: error: cannot find symbol
array[j] = 'B';
^
symbol: variable array
location: class Framed
Framed.java:24: error: cannot find symbol
System.out.print(array[j]);
^
symbol: variable array
location: class Framed
3 errors

Kann mir jemand sagen, wie ich in Zeile 6 mein Array aufschreiben soll, damit diese Fehler übergangen werden können?
 
Ein int Array mit der Größe 2 initialisiert du zb so:

int[] meinArray = new int[2]

Ein Array aus int Arrays auf beiden Ebenen Größe 2
int[][] mein2dArray = new int[2][2]

Die zweite [] kannste du auch leer lassen und die große später festlegen
 
Also in meinem Fall:

Java:
int[] array[] ={ 'A', 'B'};

ist das richtig? Weil es bei mir ein Error ergibt. Was muss ich ändern?
 
Nein ist nicht richtig
du kannst ein Array mit {} schon direkt mit Werten inititialisieren, aber was du machst ist für ein Einfaches Array.
Für ein Yweidimensionales Array wäre sowas möglich.
int[][]array ={{1, 2, 3}, {2}};
Das gibt dir ein Array bestehend aus zwei int Arrays. Im ersten sind die Werte 1, 2, 3 und im zweiten nur die 2
Aber da du eine Schleife benutzt wird das mit Werten initialisierte Array wenig sinn machen, oben habe ich dir doch geschrieben was du machen kannst.

Zwar kein Fehler :
int[] array[]; aber so deklariert man keine Arrays
Besser:
int[][] array;
 
Und es ist immer schwer, Dinge direkt zu erkennen, wenn man schlechte Bezeichner hat. Eine Variable "array" besagt schlicht nichts aus. Daher ist an einer Deklaration nicht wirklich zu erkennen, was es sein soll.

Was willst Du denn in dem Array speichern? Dementsprechend sollte der Name sein. Wenn das möglicheFeldinhalte sind, dann wäre ein
char [][] moeglicheFeldinhalte = { 'A', 'B' };
eine Lösung, die gut aussieht. Das passt zusammen. Bei deinem Feld sind A und B die Zeichen, die das Feld beinhalten sollen. Aber benennen wir die anderen Stellen um: Macht es Sinn, da dann 'A' oder 'B' zuzuordnen? Da erkennt man nun einfacher: Das macht kein Sinn.

Das soll ja etwas wie die Ausgabe oder das Feld sein. Oder von mir aus das Resultat:
char [][] ausgabe = { 'A', 'B' };
Sieht das richtig aus? Ist das die Ausgabe, die Du willst. Also soll das Ergebnis einfach
AB
sein (So man die Zeichen einfach hintereinander ausgibt)?

=> Du erkennst hoffentlich, wie die richtige Wahl der Bezeichner helfen kann.

Also stell Dir erst einmal die Frage: Was soll in dem array gespeichert werden? Wenn der Bezeichner vorgegeben ist, dann kannst Du den zwar nicht ändern, aber diese eine Frage solltest Du Dir dennoch erst einmal beantworten.
 

Neue Themen


Zurück
Oben