Hallo
ich mache zur Zeit Übungsaufgaben und die Aufgabe die mich erneut herausfordert sagt, ich soll die Elemente eines Arrays zyklisch um eins (i+1) verschieben. Der letzte array Wert wird dann der erste, sprich:
Ursprüngliches Array: [’a’, ’b’, ’c’] Ergebnis: [’c’, ’a’, ’b’]
Folgendes habe ich bis jetzt geschrieben:
Java:
publicclassAufgabe5_SS15{publicstaticvoid main (String[] args){verschiebe(newObject[]{'h','a','f','g'});}publicstaticvoidverschiebe(Object[] werte){int[] array=newint[werte.length];//Array für den Zähler bei forObject[] werte2=newObject[werte.length];//Array, der eig der selbe wie werte ist; ist da um//den Inhalt von werte2 auf werte zu übertragenfor(int i=0; i<array.length;i++){if(i!=array.length-1){
werte[i]=werte2[i+1];}elseif(i==array.length-1){
werte[0]=werte2[i];}}}}
Der Compiler beschwert sich nicht, aber bei der Ausführung krieg ich einfach nichts:
Java:
C:\Users\media\Desktop\ProgramierenUebung\Uebung für Klausur>javac Aufgabe5_SS15.java
C:\Users\media\Desktop\ProgramierenUebung\Uebung für Klausur>java Aufgabe5_SS15C:\Users\media\Desktop\ProgramierenUebung\Uebung für Klausur>
Was mich schon zu Beginn skeptisch gemacht hat ist dieses Object[].
Was genau ist das und wie, bzw. was gebe ich beim Methodenaufruf da ein?
Wenn du im Programm nirgends eine Ausgabe machst, bekommst du natürlich auch keine Ausgabe.
Falls du alle Werte ausgeben willst, musst du halt in einer Schleife über das Array laufen und per System.out.print eben auch was ausgeben
Wenn du im Programm nirgends eine Ausgabe machst, bekommst du natürlich auch keine Ausgabe.
Falls du alle Werte ausgeben willst, musst du halt in einer Schleife über das Array laufen und per System.out.print eben auch was ausgeben
vielleicht solltest du dir mal ein Grundlagenbuch anschauen.
verschiebe ist nunmal eine funktion die nichts zurückgibt.
Wie schon gesagt, musst du eben über dein ganzes Array per Schleife drüber iterieren und jeden Eintrag per System.out.print ausgeben
Einfach wenn du mit dem verschieben fertig bist nochmal über das werte-Array und jeden Eintrag ausgeben:
Java:
publicstaticvoidverschiebe(Object[] werte){int[] array=newint[werte.length];//Array für den Zähler bei forObject[] werte2=newObject[werte.length];//Array, der eig der selbe wie werte ist; ist da um//den Inhalt von werte2 auf werte zu übertragenfor(int i=0; i<array.length;i++){if(i!=array.length-1){
werte[i]=werte2[i+1];}elseif(i==array.length-1){
werte[0]=werte2[i];}}// hier jetzt werte ausgebenSystem.out.println("Ergebnis des verschiebens:");for(int i=0;0<werte.length; i++){System.out.print(werte[i]+" ");}}
und dann siehst du vielleicht auch was noch alles falsch ist
Also Danke erst mal an euch, ich hab n bisschen rumprobiert...
Java:
publicclassAufgabe5_SS15{publicstaticvoid main (String[] args){verschiebe(newObject[]{'h','a','f','g'});}publicstaticvoidverschiebe(Object[] werte){int[] array=newint[werte.length];//Array für den Zähler bei forObject[] werte2=newObject[werte.length];//Array, der eig der selbe wie werte ist; ist da um//den Inhalt von werte2 auf werte zu übertragenint j=0;for(int i=0; i<array.length;i++){if(j!=array.length-1){
werte[i]=werte2[j+1];
j++;}elseif(j==array.length-1){
werte[i]=werte2[j];}}System.out.println("Verschobenes Array sieht aus wie folgt: ");for(int i=0; i<array.length;i++){System.out.print(werte[i]+" ");}}}
Ausgabe:
Java:
C:\Users\media\Desktop\ProgramierenUebung\Uebung für Klausur>java Aufgabe5_SS15VerschobenesArray sieht aus wie folgt:nullnullnullnull
Also nur ein paar Anmerkungen:
a) Wozu brauchst Du das Array array? Du nutzt es ja nur um die Länge zu ermitteln, un die ist ja die gleiche wie die von werte und werte2
b) Evtl. solltest Du einmal überlegen, ob Du nicht etwas anders vorgehen könntest. Stell Dir vor, Du hast da lauter kleine Plättchen auf denen irgend etwas steht. Diese Plättchen liegen schön nebeneinander. Nun sollst Du die Plättchen jeweils um einen Platz verschieben und das letzte soll zum ersten werden. Wie würdest Du da vorgehen?
Ja du hast Recht Konrad. Ich habe mich mit Komilitonen zusammen gesetzt und wir haben das Problem gelöst, anhand der Beiträge hier
Nochmals danke an alle!