Array Übung

parrot

Aktives Mitglied
Schreibe eine Methode feld [ ][ ] (int .... a) ein Feld von Feldern erzeugt das in jeder Ebene einen Wert mehr hat.
Beispiel:
feld[ ] [ ] (1,2,3,4) soll
[1]
[1,2]
[1,2,3]
[1,2,3,4]
erzeugen
 

lennero

Bekanntes Mitglied
Vielleicht hilft dir das weiter:

Code:
feld [][]

Das ist ein Array aus Arrays. Du sollst also N Arrays im Array Feld speichern, wobei die Größe der Arrays immer wieder um 1 erhöht wird.

Java:
for(int i = 0; i < N; i++) {
    int[] ni = new int[i + 1];
    ...
    feld[i] = ni;
}
 

parrot

Aktives Mitglied
Java:
public static feld[][](int [][]a) {
    
    for(int i = 0; i < a.length, i++) {
        
        for(int j = 0; j < a[i].length; j++){
            
            system.out.print(a[i][j+1]);
        }
        system.out.println();
    }
}

meine Idee
 
K

kneitzel

Gast
Du erzeugst aber kein 2D Array und gibst auch nichts zurück.

Schau Dir doch einfach einmal an, wie man Arrays deklariert und erzeugt. @lennero hat auch ein paar Hinweise gegeben - falls Du da Verständnisprobleme hast, dann frag gezielt nach.
 

TM69

Bekanntes Mitglied
Java:
public static feld[][](int [][]a) {
 
    for(int i = 0; i < a.length, i++) {
     
        for(int j = 0; j < a[i].length; j++){
         
            system.out.print(a[i][j+1]);
        }
        system.out.println();
    }
}

meine Idee
Was mich jetzt extrem verwundert ist der Funktionnamen "[]" sind als Funktionsnamen nicht zugelassen. Wenn es ein Rückgabewert sein soll, dann frage ich mich wo gibts du es zurück? Auch frage ich mich gerad was übergibst du? Irgendwie passt Funktionsaufruf nicht mit dem Code, der ausgeführt werden soll, überein.
 

parrot

Aktives Mitglied
Du erzeugst aber kein 2D Array und gibst auch nichts zurück.

Schau Dir doch einfach einmal an, wie man Arrays deklariert und erzeugt. @lennero hat auch ein paar Hinweise gegeben - falls Du da Verständnisprobleme hast, dann frag gezielt nach.
Java:
public static feld[][] (int a, int b) {
   
    int [] tabelle = new int [i + 1];

    for(int i = 0; i < a; i++){
       
        for(int j = 0; j < b, j++){

            tabelle [i] = i + 1;
        }
    }
    return tabelle;
}
 
K

kneitzel

Gast
Hast du das denn mal ausprobiert? Das dürfte sich nicht übersetzen lassen.
So Code entwickelt man am Besten immer in einer IDE, damit Syntax Fehler direkt angezeigt werden
 
K

kneitzel

Gast
Dann fang doch erst einmal mit einer Methodensignatur an, die
Ein 2d int Array zurück gibt und ein int array als Parameter hat ... (oder varargs ... egal). Natürlich hat die Methode einen Namen ....

Fas wäre der erste Schritt ...
 

TM69

Bekanntes Mitglied
Kannst du mir einen Lösungsvorschlag geben bitte ?
Was JustNobody versucht dir zusagen:
eine Methode hat immer folgenden Aufbau:
<Zugriffsbeschränkung> <weitere Angaben> <Rückgabewert> <Funktionsname> <Übergabeparameter>

also z.B.
Code:
public int getValue(int a)

<Zugriffsbeschränkung>
können sein (kann nur einmal vorkommen)
- public => auf die Funktion kann von außerhalb zugriffen werden
- protected => auf diese Funktionen kann nur innerhalb der Klasse und deren abgeleiteten Klassen benutzt werden
- private => kann nur innerhalb der Klasse benutzt werden, in der sie definiert ist

<weitere Angaben>
sind Erweiterungen, die nicht angegeben werden müssen (kann einzeln oder in Kombinaten auftreten
- static => statische Funktion, diese Funktion ist Klassenfunktion, d.h. diese Funktion bezieht sich auf alle instanzierte Klassen, ist also nicht direkt an ein Objekt gebunden. Sie wird normalerweise nur dazu benutzt, um sicherzustellen, dass der übergebene Wert für eine statische Attribut innerhalb eines Bereichs liegt (z.B. Der übergebene Wert darf nur im Bereich von 0 - 100 liegen) oder um beim ausführen weitere Operationen ausgeführt werden sollen
- final => der Rückgabewert darf nicht verändert werden

<Rückgabewert>
kann nur einmal auftreten und nur wenn die Funktion "return <value>" besitzt Der Rückgabewert muss mit der Angabe übereinstimmen oder davon abgeleitet sein. Verfügt die Funktion über keinen Rückgabewert, so wird an dieser Stelle "void" benutzt.

<Funktionsname>
Funktionsname kann nur Nummer [0-9] , Buchstaben [a-z] [A-Z] oder Unterstrich "_" sein. Die Kombination und Anzahl ist frei wählbar. Sie muss aber mindestens ein Zeichen besitzen. Zum guten Ton gehört es aber Getter und Setter mit "get" oder "set" anfangen zu lassen. "is" wird nur benutzt wenn der Rückgabewert boolean ist. Außerdem sollten
- die Namen mit kleinbuchstaben anfangen
- der Name wirklich so gewählt sein, dass sogar gleich ein Aussenstehender erkennen kann was die Funktion macht

Beispiele:
getValue => rückgabe eines Attributes
setValue => setzen eines Attributes
isChecked => rückgabe eines boolschen Attributs
testSetColorValueWithNullParamShouldThrowExcption => test Funktion, die bei Tests überprüfen soll ob beim Setzen des Farbwertes mit Null eine Exception wirft

<Übergabeparameter>
kann angegeben werden, ist aber nicht zwingend erforderlich. Die Anzahl der Parameter kann beliebig sein.

So dass ist mehr als genug zur Beschreibung einer Funktion für den Anfang.
 
Zuletzt bearbeitet:

TM69

Bekanntes Mitglied
Ergänzung:
mir ist gerad beim erneuten durchlesen, daß getValue und setValue missverständlich sein könnten. Um ganz genau zu sein, müssen Getter / Setter mit get oder set anfangen, gefolgt von dem Namen des Attributes. Also im obigen Beispiel heist das Attribute value.
 

parrot

Aktives Mitglied
Vielleicht hilft dir das weiter:

Code:
feld [][]

Das ist ein Array aus Arrays. Du sollst also N Arrays im Array Feld speichern, wobei die Größe der Arrays immer wieder um 1 erhöht wird.

Java:
for(int i = 0; i < N; i++) {
    int[] ni = new int[i + 1];
    ...
    feld[i] = ni;
}
Java:
public static feld[][](int ...a) {

    for(int i = 0; i < a; i++) {

       int[] a = new int[i + 1];
      
          for(int j = 0; j < a[i]; j++) {

            feld[i] = a;
         }
     }
}
 
K

kneitzel

Gast
Nicht nur das.

- Der Parameter a ist ein Array und da macht dann das "i < a" keinen Sinn.
- Dann wird ein neues Array a angelegt - das wird fehlschlagen, da es in dem Scope bereits ein a gibt.

Also mein Ansatz wäre jetzt, wirklich von 0 anzufangen:
Schreib erst einmal einen einfachen Rahmen, der ausführbar ist, also eine Klasse mit einer main Methode. In der Main Methode kannst Du ja eine einfache Ausgabe machen. Also noch absolut nichts, was zu der Aufgabe gehört.

Solltest Du damit schon Probleme haben, dann such mit Google mal nach "Java ist auch eine Insel" und fang von Anfang an zu lesen!
 

temi

Top Contributor
Schreibe eine Methode feld [ ][ ] (int .... a) ein Feld von Feldern erzeugt das in jeder Ebene einen Wert mehr hat.
Beispiel:
feld[ ] [ ] (1,2,3,4) soll
[1]
[1,2]
[1,2,3]
[1,2,3,4]
erzeugen
Tatsächlich ist mir die Aufgabe in der gegebenen Formulierung etwas unklar. Um die gewünschte Ausgabe zu erhalten, braucht man als Parameter nur einen einzigen int-Wert, im Beispiel wäre das die 4.

Signatur wäre dann: int[][] feld(int a) und der Aufruf: int[][] result = feld(4);

Ich würde mir an deiner Stelle noch mal den Text der Aufgabe anschauen.
 

parrot

Aktives Mitglied
Tatsächlich ist mir die Aufgabe in der gegebenen Formulierung etwas unklar. Um die gewünschte Ausgabe zu erhalten, braucht man als Parameter nur einen einzigen int-Wert, im Beispiel wäre das die 4.

Signatur wäre dann: int[][] feld(int a) und der Aufruf: int[][] result = feld(4);

Ich würde mir an deiner Stelle noch mal den Text der Aufgabe anschauen.

Java:
public static int[][] feld(int a) {
  
    int[][] tabelle = new int [a][];
  
    for(int i = 0; i < a; i++) {
      
        tabelle[i] = new int[i + 1]
          
            for(int j = 0; j < i; j++) {
              
                tabelle[i][j] = i + (j + 1);
            }
    }
    return tabelle;
}

Ja, ich habe auch so gedacht.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Das erzeugt aber nicht die Arrays wie sie am Anfang gegeben waren.

Und evtl. War das Beispiel auch nur ungünstig gewählt. Wenn ein Array übergeben wird z.B. 7, 9, 3, 1, 5, dann könnte das gewü schte ja sein
7
7, 9
7, 9, 3
7, 9, 3, 1
7, 9, 3, 1, 5

So hatte ich die Aufgabe verstanden. Aber der Ansatz selbst sieht ja jetzt langsam brauchbar aus ...
Die zuweisung der richtigen Werte muss man jetzt nur noch richtig hin kriegen ... halt abhängig von der wirklichen Aufgabenstellung.
 

parrot

Aktives Mitglied
Das erzeugt aber nicht die Arrays wie sie am Anfang gegeben waren.

Und evtl. War das Beispiel auch nur ungünstig gewählt. Wenn ein Array übergeben wird z.B. 7, 9, 3, 1, 5, dann könnte das gewü schte ja sein
7
7, 9
7, 9, 3
7, 9, 3, 1
7, 9, 3, 1, 5

So hatte ich die Aufgabe verstanden. Aber der Ansatz selbst sieht ja jetzt langsam brauchbar aus ...
Die zuweisung der richtigen Werte muss man jetzt nur noch richtig hin kriegen ... halt abhängig von der wirklichen Aufgabenstellung.
 

parrot

Aktives Mitglied
Java:
public static int[][] feld(int a) {
   
    int [][] tabelle = new int[a][];
   
    for(int i = 0; i < a; i++) {
       
        tabelle[i] = new int[i + 1];
       
        for(int j = 0; j < i; j++) {
           
            tabelle[i][j] = j + 1;
        }
    }
    return tabelle;
}
und jetzt ?
 

TM69

Bekanntes Mitglied
könnte richtig sein, vorausgesetzt, du möchtest das diese Funktion allgemeingültig ist. siehe meine Beschreibung oben.

Vergleich:
Code:
class MyClass {
    public static int[][] feld(int a) {
            // mache irgendwas
    }
}

class myApp {
        public static void main(String[] args) {
              // MyClass myClass = new MyClass();           // Auskommentiert, da Class hier nicht instanziert wird. s. unten

              int[][] wert = MyClass.feld(20);                     // Achtung!!! Hier wird der Klassenname benutzt, da die Funktion static ist  ;
        }
}
}

vs.

Code:
class MyClass {
    public int[][] feld(int a) {
            // mache irgendwas
    }
}

class myApp {
        public static void main(String[] args) {
              MyClass myClass = new MyClass();           // hier wird die Klasse myClass instanziert.

              myClass.feld(20);                                       // Achtung!!! Hier wird die Instanz-Referenz benutzt, also nicht der Klassenname "MyClass" sonder die Variable "myClass'
        }
}
}

Kleiner Tipp noch, gib deiner Funktion "feld" einen aussagekräftigeren Namen. Stelle dir folgende Situation vor. Ihr arbeitet in einem Team. Jetzt kommt ein Neuer (z.B. Ich) hinzu (absolut keine Seltenheit). Ich wüsste z.B. gar nicht was macht diese Funktion überhaupt? Wozu ist sie da?
Was wäre jetzt also mein nächster Schritt? Ich müsste denjenigen Fragen, wenn ich wüsste wer es war (meistens weis man es aber nicht). Jetzt wirds noch etwas vertrackter. Du, als Entwickler der Funktion, hättest es nicht dokumentiert, und bist aus dem Unternehmen (andere Firma, krankheits- oder altersbedingt) ausgeschieden. Wer soll jetzt noch wissen, was diese Funktion macht?
.
Oder fragen wir anders rum. Ich schreibe eine Funktion, du solltest mir sagen was diese Funktion tut
Code:
void test()
Na wozu ist sie da???? :D
.
.
.
.
.
.
.
.
Hätte ich geschrieben
Code:
void testSetColorValueWithNullParamShouldThrowExcption()
hättest du sofort erkannt was die Funktion macht, richtig??? :D
Ich hoffe du siehst den Unsterschied:D:D:D
 

parrot

Aktives Mitglied
könnte richtig sein, vorausgesetzt, du möchtest das diese Funktion allgemeingültig ist. siehe meine Beschreibung oben.

Vergleich:
Code:
class MyClass {
    public static int[][] feld(int a) {
            // mache irgendwas
    }
}

class myApp {
        public static void main(String[] args) {
              // MyClass myClass = new MyClass();           // Auskommentiert, da Class hier nicht instanziert wird. s. unten

              int[][] wert = MyClass.feld(20);                     // Achtung!!! Hier wird der Klassenname benutzt, da die Funktion static ist  ;
        }
}
}

vs.

Code:
class MyClass {
    public int[][] feld(int a) {
            // mache irgendwas
    }
}

class myApp {
        public static void main(String[] args) {
              MyClass myClass = new MyClass();           // hier wird die Klasse myClass instanziert.

              myClass.feld(20);                                       // Achtung!!! Hier wird die Instanz-Referenz benutzt, also nicht der Klassenname "MyClass" sonder die Variable "myClass'
        }
}
}

Kleiner Tipp noch, gib deiner Funktion "feld" einen aussagekräftigeren Namen. Stelle dir folgende Situation vor. Ihr arbeitet in einem Team. Jetzt kommt ein Neuer (z.B. Ich) hinzu (absolut keine Seltenheit). Ich wüsste z.B. gar nicht was macht diese Funktion überhaupt? Wozu ist sie da?
Was wäre jetzt also mein nächster Schritt? Ich müsste denjenigen Fragen, wenn ich wüsste wer es war (meistens weis man es aber nicht). Jetzt wirds noch etwas vertrackter. Du, als Entwickler der Funktion, hättest es nicht dokumentiert, und bist aus dem Unternehmen (andere Firma, krankheits- oder altersbedingt) ausgeschieden. Wer soll jetzt noch wissen, was diese Funktion macht?
.
Oder fragen wir anders rum. Ich schreibe eine Funktion, du solltest mir sagen was diese Funktion tut
Code:
void test()
Na wozu ist sie da???? :D
.
.
.
.
.
.
.
.
Hätte ich geschrieben
Code:
void testSetColorValueWithNullParamShouldThrowExcption()
hättest du sofort erkannt was die Funktion macht, richtig??? :D
Ich hoffe du siehst den Unsterschied:D:D:D
Ja ich verstehe genau was du meinst und du hast völlig Recht. Ich versuche immer meine Codes genug zu kommentieren und einen aussagekräftigeren Namen zu geben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Array - Übung Java Basics - Anfänger-Themen 3
T Methoden Array Übung Java Basics - Anfänger-Themen 7
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

Ähnliche Java Themen

Neue Themen


Oben