Hallo Leute,
mein Problem ist, dass ich nicht weiß wie genau man ein Array das man in einer Methode, in meinem Fall in der Methode merge, berechnet hat wieder in die Main-Methode übergibt. Wenn ich es so versuche wie unten im Programm zu sehen ist, dann funktioniert es leider nicht.
Wenn das Array dann in der Main-Methode aufrufbar ist, wollte ich es ein mit toString(.....) ausgeben lassen. Wäre nett wenn mir einer helfen könnte
Java:
importjavax.swing.JOptionPane;importjava.util.Arrays;class test {staticStringmerge(){int[] F1 ={1,6,8};int[] F2 ={2,4,5,9};intLaenge= F1.length + F2.length;int[] F3 =newint[Laenge];for(int i =0; i < F1.length; i++){
F3 [i]= F1 [i];
i++;}for(int i =0; i < F2.length; i++){
F3[F1.length + i]= F2[i];}}Arrays.sort(F3);return F3[];}publicstaticvoidmain(String[] args){JOptionPane.showMessageDialog(null,),"Ausgabe",JOptionPane.PLAIN_MESSAGE);}}
importjavax.swing.JOptionPane;importjava.util.Arrays;class test {staticStringmerge(){int[] F1 ={1,6,8};int[] F2 ={2,4,5,9};intLaenge= F1.length + F2.length;int[] F3 =newint[Laenge];for(int i =0; i < F1.length; i++){
F3 [i]= F1 [i];
i++;}for(int i =0; i < F2.length; i++){
F3[F1.length + i]= F2[i];}}Arrays.sort(F3);return F3[];}publicstaticvoidmain(String[] args){JOptionPane.showMessageDialog(null,),"Ausgabe",JOptionPane.PLAIN_MESSAGE);}}
nur sagt er mir jetzt in zeile 25: illegal start of type und verweist auf das return....
Auf die Klammersetzung achten! Das return steht ausserhalb der Methode und die Klammer in Zeile 26 ist zu viel. Würde mal (vor allem als Anfänger) leichter sehen, wenn man den Code anständig formatiert ;-)
oh man^^ das hätte ich aber selber sehen müssen :-D ne andere frage wäre noch wenn ich das jetz compiliere sagt er mir: "Object cannot be applied to (int[])"
ich hab schon probiert es mit "f4.toString()" zu schreiben, dann compiliert er es auch nur dann kommt ne wirre Folge von Zeichen und Buchstaben raus
Java:
importjavax.swing.JOptionPane;importjava.util.Arrays;class test {staticint[]merge(){int[] f1 ={1,6,8};int[] f2 ={2,4,5,9};intLaenge= f1.length + f2.length;int[] f3 =newint[Laenge];for(int i =0; i < f1.length; i++){
f3 [i]= f1 [i];
i++;}for(int i =1; i < f2.length; i++){
f3[f1.length + i]= f2[i];}//Arrays.sort(int [] f3);return f3;}publicstaticvoidmain(String[] args){int[] f4 =merge();JOptionPane.showMessageDialog(null,toString(f4),"Ausgabe",JOptionPane.PLAIN_MESSAGE);}}
f4.toString() bringt dir den hash code des Arrays weil der ja nicht weiss, wie du den haben willst - ich habe soeben einen Vorschlag ins letzte Posting von mir gehängt - schau den mal an
ach sry...die klammer hat ich bei mir hier schon entfernt
so wie du es gepostet hat würde es natürlich auch gehn nur leider steht in meiner aufgabestellung:
Testen Sie ihre Methode innerhalb der main-Methode, indem Sie das im Beispiel angegebene
Array sortiert mittels java.util.Arrays.toString(...) ausgeben.
ich habe auch schon in der java api nachgeschaut wie das damit funktionieren sollte nur er sagt mir das halt mit dem toString(f4)....
die klammer habe ich hier entfernt:
Java:
importjavax.swing.JOptionPane;importjava.util.Arrays;class test {staticint[]merge(){int[] f1 ={1,6,8};int[] f2 ={2,4,5,9};intLaenge= f1.length + f2.length;int[] f3 =newint[Laenge];for(int i =0; i < f1.length; i++){
f3 [i]= f1 [i];
i++;}for(int i =1; i < f2.length; i++){
f3[f1.length + i]= f2[i];}//Arrays.sort(int [] f3);return f3;}publicstaticvoidmain(String[] args){int[] f4 =merge();JOptionPane.showMessageDialog(null,toString(f4),"Ausgabe",JOptionPane.PLAIN_MESSAGE);}}
Methoden ruft man immer an Ihrem Objekt oder über die Klasse auf. Jede Klasse erbt automatisch von Object und besitzt dadurch eine toString(String s) Methode. Der Kompiler geht davon aus, das diese hier versucht wird aufzurufen, doch Dein toString() aufruf passt nicht zur toString() von Object.
Kurzum
In diesem Fall willst Du die statische Methode der Klasse Arrays aufrufen, also musst Du die Klasse mit angeben.
[JAVA=32] ... java.util.Arrays.toString(f4) ...[/code]
da du java.util.Arrays bereits importierst reicht aber auch
[JAVA=32] ... Arrays.toString(f4) ...[/code]
naja du kannst ja durch das Array iterieren und jeden eintrag mit array.toString() ausgeben lassen.
dann bekommst du auch deinen Inhalt.
oder vorher schon einfach einen String mit der array.toString() Methode erstellen und den ausgeben lassen.