Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich beschäftige mich zur Zeit mit Methoden und dazu habe ich folgendes gecodet:
Java:
package methoden;
public class SwappedCopy {
public static int[] swappedCopy(int[] copy){
for(int i=0, e=copy.length; i<copy.length;i++,e--){
copy[i]=e;
}
return copy;
}
public static int[] copy(int[] array){
int[] copy = new int[array.length];
for(int i=0; i<array.length;){
copy[i]= array[i];
}
return copy;
}
public static void main(String[] args) {
System.out.println("hey");
int[] array = new int[]{1,2,3,4,5};
System.out.println("Die umgedrehten Werte: ");
for(int i =0;i<swappedCopy(copy(array)).length;i++)
System.out.print(swappedCopy(copy(array))[i]);
}
}
Allerdings dachte ich es käme "Die umgedrehten Werte: 12345", wobei nur die Meldung "Die umgedrehten Werte: " in der Konsole auftaucht. Vielen Dank schonmal im vorraus!
Was du falsch machst:
1: eine Methode nennt man nicht wie die Klasse, es sei denn es ist der Konstruktor.
2: die main Methode befindet sich normalerweise in der Main klasse, wenn nicht steht sie wenigstens ganz oben. In deinem Fall würde ich die Klasse einfach in Main umbenennen und die Mainzer öde ganz hoch schieben.
3: Methoden in Methoden zu Schachteln ist irgendwie pfui... ^^
3: ich hab's nicht selber ausprobiert, aber ich würde du brauchst sie copy Methode nicht. Und kannst direkt swapped copy aufrufen.
(wobei ich glaub dass es bei Arrays size heißt, kann ich aber gerade nicht nachschauen, weil ich am Handy bin.)
Die Ausgabe erfolgt dann in einer einfachen Ausgabe mit ner forschleife oder du printer gleich das zuruckgegebene Array
Was du falsch machst:
2: die main Methode befindet sich normalerweise in der Main klasse, wenn nicht steht sie wenigstens ganz oben. In deinem Fall würde ich die Klasse einfach in Main umbenennen und die Mainzer öde ganz hoch schieben.
3: Methoden in Methoden zu Schachteln ist irgendwie pfui... ^^
Wobei es dem Compiler vollkommen egal ist in welcher Klasse deine main-Methode steht und auch an welcher Stelle. Daher bitte nicht sagen es ist falsch
Natürlich sollte die main-Methode in einer logisch sinnvollen Klasse stehen (was bei so kleinen Testklassen egal ist).
Methodenaufrufe in Methodenaufrufe zu schreiben ganz normal. Natürlich muss man abwegen ob es nicht sinnvoller ist diesen oder jenen Wert vorher zwischen zu speichern.
Auch hier nicht falsch, aber je nach Situation und Code sollte man aufpassen.
Erstmal was du bei jedem deiner Beiträge falsch machst: Ein Unsinniger Titel
Was glaubst du wie es hier aussehen würde, wenn jeder seine Beiträge nur "Frage" oder "Was mache ich falsch" nennt? Benutz bitte einen Titel der ganz grob angibt worum es in deinem Beitrag geht. In diesem Fall z.B. "Reihenfolge eines Arrays ändern" oder so.
Ansonsten wäre es sinnvoll das Ergebnis von swappedCopy(copy(array)) zwischenzuspeichern, denn momentan wird jedes mal eine neue kopie erzeugt, wenn du System.out.print(swappedCopy(copy(array))); aufrufst. Funktioniert zwar trotzdem, ist aber unglaublich unnötig.
Naja... Ich sag mal so: dem Compiler ist es auch egal wenn du deine Methode abxcFfgh() nennst. Trotzdem sollte das vermieden werden, weil es einfach absolut unleserlich ist. Nur weil es die Compiler egal ist heißt das in meinen Augen nicht, das es richtig ist das zu tun.
Methodenaufrufe in Methodenaufrufe zu schreiben ganz normal. Natürlich muss man abwegen ob es nicht sinnvoller ist diesen oder jenen Wert vorher zwischen zu speichern.
Auch hier nicht falsch, aber je nach Situation und Code sollte man aufpassen.
Es ist natürlich richtig, dass Methoden mit dem Rückgabewert anderer Methoden als Parameter aufgerufen werden.
Ich kenne aber Leute bei denen es so aussieht: a(b(c(d(e(f, g(h)))))...
Genauso kenne ich Leute die sich darüber freuen folgendes zu fabrizieren:
A.getB().getC().getD().getE()...
Die Folge davon ist dass sie es irgendwann nicht mehr verstehen und am Ende alles einzeln zwischenspeichern. Warum es sich also von Anfang an schwer machen, und am Ende lesbar machen.
Lesbarer Code ist einfacher zu verstehen und ich finde gerade Anfänger sollten es sich nicht unnötig schwer machen.
dem Compiler ist es auch egal wenn du deine Methode abxcFfgh() nennst. Trotzdem sollte das vermieden werden, weil es einfach absolut unleserlich ist. Nur weil es die Compiler egal ist heißt das in meinen Augen nicht, das es richtig ist das zu tun
Habe auch nicht behauptet das die Namensgebung egal ist (auch wenn es den Compiler nicht stört).
Es mir nur darum das es nicht wichtig ist in welcher Klasse die Main Methode liegt und ob diese nun an 1.Stelle, 2.Stelle oder ganz wo anders liegt.
-> Diesbezüglich kann man also nichts falsch machen, hier wollte ich nur deine Aussage widerlegen das dies falsch wäre.
Ich kenne aber Leute bei denen es so aussieht: a(b(c(d(e(f, g(h)))))
.........
A.getB().getC().getD().getE()...
Die Folge davon ist dass sie es irgendwann nicht mehr verstehen und am Ende alles einzeln zwischenspeichern
Ich habe den Code ein wenig umgeändert, sodass er kompakter ist und mir ist aufgefallen, dass ich die einfach Anweisung "i++" in der for-Schleife vergessen habe. ^^'
Ich habe keine Ahnung, warum mir das nicht als Fehler unterringelt wurde.
Du machst da, glaube ich, einen kleinen Fehler. Du setzt die erste swap immer gleich a.length, aber wenn das array 0,1,2,3,4 wäre, dann wäre aNew[0] ja 5, obwohl es 4 sein müsste. Oder vertue ich mich da ?
@Cromewell: du hast dich vertan retval = copy[copy.length - 1+i]; i =0 und -1 hat er auch drin, also alles gut für die letzte zeile aber sollte entweder -(1+i) sein oder -1-i je nach dem was man bevorzugt