Array Übung

Diskutiere Array Übung im Java Basics - Anfänger-Themen Bereich.
parrot

parrot

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
 
L

lennero

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

parrot

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
 
J

JustNobody

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.
 
T

TM69

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

parrot

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;
}
 
J

JustNobody

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
 
J

JustNobody

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 ...
 
T

TM69

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:
T

TM69

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

parrot

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;
         }
     }
}
 
J

JustNobody

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!
 
T

temi

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

parrot

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:
J

JustNobody

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

parrot

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

parrot

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 ?
 
Thema: 

Array Übung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben