Java programm
logitech
- java
0 dedlfix0 mrjerk0 logitech
0 Jens Holzkämper0 Matti Mäkitalo
das programm fragt den benutzer wie viel zahlen er will und dann muss der benutzer die zahlen eingeben und sie werden sortiert!! aber es funtioniert nicht richtig... wo ist der fehler??
public static void main(String[] args)
{
int[] eingabe;
int anzahl;
int temp;
OpenInput();
System.out.println("Wie viele Zahle ? max 100");
anzahl=ReadInt();
eingabe=new int[anzahl];
for(int a=0; a<anzahl; a++)
{
System.out.println("Bitte zahl eingeben");
eingabe[a]=ReadInt();
}
for (int l=0; l<anzahl; l++)
{
for(int k=1; k<anzahl; k++)
{
int j=0;
if(eingabe[j]<eingabe[k])
{
temp=eingabe[j];
eingabe[j]=eingabe[k];
eingabe[k]=temp;
}
j++;
}
}
for(int i=0; i<anzahl; i++)
{
System.out.println("\n"+eingabe[i]);
}
}
}
das kommt heraus:
Wie viele Zahle ?
5
Bitte zahl eingeben
1
Bitte zahl eingeben
2
Bitte zahl eingeben
3
Bitte zahl eingeben
4
Bitte zahl eingeben
5
//Hier sollten sie sortiert herausgegeben werden
5
1
2
3
4
danke!!
mfg
Hi!
das programm fragt den benutzer wie viel zahlen er will und dann muss der benutzer die zahlen eingeben und sie werden sortiert!! aber es funtioniert nicht richtig... wo ist der fehler??
Nun, dann kommt jetzt das Debugging an die Reihe. Es gibt IDEs (wie Eclipse), mit der kann man Java schön schrittweise abarbeiten und sich dabei die Variableninhalte ansehen. So kann man feststellen, an welcher Stelle Wunsch und Wirklichkeit auseinanderlaufen. Welche Stelle ist das konkret bei dir?
Lo!
Hi!
Welche Stelle ist das konkret bei dir?
Lo!die unetrste stelle mit dem j...
Hi!
Welche Stelle ist das konkret bei dir?
die unetrste stelle mit dem j...
Etwas konkreter darf es schon sein. Was erwartest du und was bekommst du stattdessen? Wenn du darüber nachdenkst, was ist deine Meinung, was das Problem sein könnte. Und wenn du den eingesetzten Algorithmus nur irgendwo abkopiert und nicht verstanden hast, dann sag, wo dein Verständnisproblem liegt.
Lo!
Hi!
Welche Stelle ist das konkret bei dir?
die unetrste stelle mit dem j...
Etwas konkreter darf es schon sein. Was erwartest du und was bekommst du stattdessen? Wenn du darüber nachdenkst, was ist deine Meinung, was das Problem sein könnte. Und wenn du den eingesetzten Algorithmus nur irgendwo abkopiert und nicht verstanden hast, dann sag, wo dein Verständnisproblem liegt.
Lo!
die zahlen sollten sortiert herausgegeben werden aber wie du sihst geht nur die letzte zahl nach oben hab das resultat auch hineingetan.... nichts abkopiert! ..
mfg
Hi!
Bitte zitiere nicht im TOFU-Stil sonden nur das, worauf du dich konkret beziehst. Danke.
die zahlen sollten sortiert herausgegeben werden aber wie du sihst geht nur die letzte zahl nach oben hab das resultat auch hineingetan.... nichts abkopiert! ..
Nun, wenn du das selbst erfunden hast, musst du ja wissen, wie der Algorithmus funktioniert, wann welche Werte in welchen Variablen stehen sollen. Du sollst dir nun nicht (nur) das Ergebnis des Progamms anschauen, sondern die Arbeitsweise Schritt für Schritt kontrollieren, ob sie genau das macht, was du dir im Detail vorgestellt hast. Nutze dazu die Möglichkeiten des integrierten Debuggers deiner Programmierumgebung. Wenn du eine(n) solche(n) nicht hast, kannst du immer noch Kontrollausgaben der Variablenwerte einfügen.
Lo!
Hallo,
Guck Dir mal diese Stelle etwas an:
int j=0;
if(eingabe[j]<eingabe[k])
{
temp=eingabe[j];
eingabe[j]=eingabe[k];
eingabe[k]=temp;
}
j++;
Du erhöhst j am Ende der Schleife um 1, beim nächsten Schleifendurchlauf setzt du es aber wieder auf 0 - das macht wenig Sinn.
Hallo,
Guck Dir mal diese Stelle etwas an:
int j=0;
if(eingabe[j]<eingabe[k])
{
temp=eingabe[j];
eingabe[j]=eingabe[k];
eingabe[k]=temp;}
j++;
> Du erhöhst j am Ende der Schleife um 1, beim nächsten Schleifendurchlauf setzt du es aber wieder auf 0 - das macht wenig Sinn.
aber wenn ich das j++ in die schleife setzte geht es auch nicht... wie muss ichs dann genau machen??
danke mfg
Tach,
wo ist der fehler??
du hast eine Variable l, die du nicht benutzt und eine Variable j, die Überflüssig ist und wenn du das Problem gelöst hast, wirst du feststellen, dass das erste Element nicht einsortiert wird, weil du die Initialwerte von l und k vertauscht hast.
mfg
Woodfighter
Hi,
das programm fragt den benutzer wie viel zahlen er will und dann muss der benutzer die zahlen eingeben und sie werden sortiert!! aber es funtioniert nicht richtig... wo ist der fehler??
for (int l=0; l<anzahl; l++)
{
for(int k=1; k<anzahl; k++)
{
int j=0;
if(eingabe[j]<eingabe[k])
{
temp=eingabe[j];
eingabe[j]=eingabe[k];
eingabe[k]=temp;} j++; }
}
Das ganze erinnert ein wenig an ein BubbleSort. Bei [Wikipedia](http://de.wikipedia.org/wiki/Bubblesort) solltest du genug Informationen finden, um deine Implementierung zu korrigieren.
Der Unterschied beim Pseudocode von WP zu deinem liegt hauptsächlich darin, dass du immer n-1 mal durch die äußere Schleife durchiterieren willst, der WP-Algorithmus aber ggf. schon früher beendet ist (n-1 Stellen ist die Maximalzahl an Positionen, welche die erste Stelle nach hinten getauscht wird).
Bis die Tage,
Matti
--
[Webapplikationen in C++ entwickeln](http://tntnet.org/)