Hallo liebe Community, ich habe kleines BubbleSort Programm zum üben geschrieben und wollte damit mir das Thema der Methoden beibringen. Bin auch bisher mit Google als kleiner Helfer ganz weit gekommen, aber jetzt muss sich ein Logik-Fehler eingeschlichen haben. Bei der Ausgabe wird mein gefülltes Array und sortiertes Array nur mit Nullen "0" ausgeben. Ich denke sollte für euch ein leichtes sein mich drauf hinzuweisen woran es liegt. Für Kritik Hinweise bin ich immer offen
Java:
. Danke schonmal!!!
Java:
/**
* Sort SE11 AS
* @author Sascha.Fuchs
* @version 1.0/ 24.05.2012
*/importjava.util.Scanner;publicclassSort{publicint[]randomNumber(){finalint anz =21;int[] zahl =newint[anz];for(int i=0; i<anz; i++){
zahl[i]=(int)(Math.random()*1000+1);}return zahl;}publicint[]bubbleSort(){finalint anz =21;int[] zahl =newint[anz];for(int i=anz-2; i>=0;i--){for(int j=0; j<=i; j++){if(zahl[j]<zahl[j+1]){int temp=zahl[j];
zahl[j]=zahl[j+1];
zahl[j+1]= temp;}}}return zahl;}publicint[] showArray (){finalint anz =21;int[] zahl =newint[anz];for(int i=0; i<anz; i++)System.out.println("Zahl["+i+"]"+zahl[i]);return zahl;}publicstaticvoid main (String[] args){Scanner eingabe=newScanner(System.in);int input=1;do{Sort x=newSort();// Objekt erstellen der Klasse Sort
x.randomNumber();
x.showArray();
x.bubbleSort();
x.showArray();System.out.println("Wenn SIe das Programm wiederholen wollen drücken sie 1!");
input=eingabe.nextInt();}while(input==1);System.out.println("ENDE!");}}
ich hab jetzt nicht nach Richtigkeit des Algorithmus oder so geschaut, aber dein Fehler ist,... du gibst zwar ein Objekt in einer Methode zurück aber verarbeitest es nicht und erzeugst immer neue Objekte, welche default 0 sind.... hier mal ein Lösungsansatz (nur für das Methoden Problem nicht den Algo beachtet):
Java:
importjava.util.Scanner;publicclassSort{publicint[]randomNumber(){finalint anz =21;int[] zahl =newint[anz];for(int i=0; i<anz; i++){
zahl[i]=(int)(Math.random()*1000+1);}return zahl;}publicint[]bubbleSort(int[] array){for(int i=array.length-2; i>=0;i--){for(int j=0; j<=i; j++){if(array[j]<array[j+1]){int temp=array[j];
array[j]=array[j+1];
array[j+1]= temp;}}}return array;}publicvoid showArray (int[] array){for(int i=0; i<array.length; i++)System.out.println("Zahl["+i+"]"+array[i]);}publicstaticvoid main (String[] args){Scanner eingabe=newScanner(System.in);int input=1;do{Sort x=newSort();// Objekt erstellen der Klasse Sortint[] array=x.randomNumber();
x.showArray(array);
array=x.bubbleSort(array);
x.showArray(array);System.out.println("Wenn SIe das Programm wiederholen wollen drücken sie 1!");
input=eingabe.nextInt();}while(input==1);System.out.println("ENDE!");}}
falls dir die Antwort meines Vorposters nicht genügend Hilfe ist...:
du erstellst ein Array mit Zufallszahlen, dann erstellst du ein neues Array mit nichts, da für [c]int[/c] nichts =0 ist, hast du ein Array mit Nullen, in der Ausgabe machst du noch ein neues Array...evtl. würde es helfen nicht nur das Array gleich zu benennen, sondern überall auch das gleiche zu benutzen