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.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
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.
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;
}
Kannst du mir einen Lösungsvorschlag geben bitte ?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
Was JustNobody versucht dir zusagen:Kannst du mir einen Lösungsvorschlag geben bitte ?
public int getValue(int a)
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; }
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;
}
}
}
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.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
int[][] feld(int a)
und der Aufruf: int[][] result = feld(4);
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.
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;
}
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.
richtig. Aber wie kann die [] einsetzen, damit das Ergebniss so aussieht [1]Probier es doch einfach aus, dann siehst du es.
Wenn es stimmt, was @JustNobody vermutet hat, dann machst Du es jetzt nochmal, aber richtig. Deine Ergebnisse kannst Du dabei selbst überprüfen, indem Du Dir z. B. das Array ausgeben lässt. Wenn Du glaubst, dass Dein Code korrekt ist, dann stellst Du ihn nochmal ein, dann schaut hier bestimmt nochmal wer drüber.und jetzt ?
Alles richtig.Wenn es stimmt, was @JustNobody vermutet hat, dann machst Du es jetzt nochmal, aber richtig. Deine Ergebnisse kannst Du dabei selbst überprüfen, indem Du Dir z. B. das Array ausgeben lässt. Wenn Du glaubst, dass Dein Code korrekt ist, dann stellst Du ihn nochmal ein, dann schaut hier bestimmt nochmal wer drüber.
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 ;
}
}
}
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'
}
}
}
void test()
void testSetColorValueWithNullParamShouldThrowExcption()
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.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
Na wozu ist sie da????Code:void test()
.
.
.
.
.
.
.
.
Hätte ich geschrieben
hättest du sofort erkannt was die Funktion macht, richtig???Code:void testSetColorValueWithNullParamShouldThrowExcption()
Ich hoffe du siehst den Unsterschied![]()