Zahlen sortieren in Java

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
490
Hallo!

ich habe ein Program welches 6 Lottozahlen erzeugt, mit den namen feld[0] bis feld[5].
das programm funktioniert, es gibt 6 zahlen aus (sogar ohne dublikate), jedoch sind die zahlen nicht der größe geordnet. und das will ich jetzt machen...
ich weis wie ich es anstellen soll aber bei der umsetzung haperts.
der program müsste erstmal feld 0 mit den feldern 1-5 überprüfen und wenn ein zb feld 0>1 ist dann tasuchen:

if(feld[a]>feld){
speicher=feld
feld=feld[a]
feld[a]=speicher

dann muss er feld 1 mit 2-5 vergleichen usw..
ich versuche immer die ganze geschichte einzutippen aber ich bekomms einfach nicht hin, irgendwo hat mein hirn da nicht genug kapazität für ^^ kann mir wer helfen?
 
oha, so einfach ist das? ^^ nur schade dass ich mit der ewig langen tabelle nix anfangen kann... so unübersichtlich und.. ka was das alles bedeutet (nicht dass ich kein englisch könnte aber.. ka)

danke!

edit:
ach noch ne frage.
in der schule haben wir programme geschrieben in denne der nutzer was eingeben konnte. damit das funzt haben wir ne datei namens "tastatur.class" vom lehrer bekommen. jetzt habe ich diese datei nimmer. woher bekomm ich die?
 
Zuletzt bearbeitet:
Die Klasse hat er wohl selbst extra für euch geschrieben um euch das einlesen von Werten zu erleichtern.
 
Fynnjard schrieb:
nur schade dass ich mit der ewig langen tabelle nix anfangen kann... so unübersichtlich und.. ka was das alles bedeutet (nicht dass ich kein englisch könnte aber.. ka)
Ahem, das ist die Java API. Wenn Du in Java programmieren willst, solltest Du Dich mit der ganz schnell anfreunden und sie am besten immer nebenher offen haben um schnell nachschlagen zu können.
 
SheepShaver schrieb:
Ahem, das ist die Java API. Wenn Du in Java programmieren willst, solltest Du Dich mit der ganz schnell anfreunden und sie am besten immer nebenher offen haben um schnell nachschlagen zu können.
Um es deutlicher zu erklären: Java bringt eine ganze Menge von Klassen mit, die oft gebraucht werden. Damit brauchst du nicht jedes Mal das Rad neu zu erfinden und programmierst im Endeffekt effektiver.
 
ja, die API ist was ganz gutes; nur ich weiß nicht wie ich das jetzt einbauen soll:
API sagt:

public static void sort(int[] a, int fromIndex, int toIndex)

doch bei mir kommt immer beim compelieren ein illegal start of expression error.
hab ein int array aus 3 zeichen 0,1,2 und möchte die 3 zeichen sortieren.
wie muss ich da vorgehen? bin mit der API nicht besonders vertraut.

danke für die antw. im voraus lg ;-)
 
Code:
java.util.Array.sort(deinArray);
Das wars, int fromIndex & int toIndex sind dazu da, falls man nur Teile des Arrays sortieren möchte.
 
vielen dank, habs auch schon im api gefunden - super diese methode.

aber ich hab jetzt ein anderes problem, versuche schon den ganzen tag und komm nicht weiter:
ich möchte einen string über die kommandozeile einlesen, das problem ist aber, wenn man die argumente übergibt, die dann so angesprochen werden können:
args[0], args[1] .... also wenn ich ABC DEF einlese kann ich mit args[0] auf ABC zugreiffen und mit args[1] auf DEF.
wie kann ich aber die anzahl der elemente der kommandozeile ermitteln, damit ich dann eine schleife schreiben kann und diese dann zu einen String zusammenfassen kann?

wie immer, vielen dank für die antw. im vorraus

lg
 
Code:
args.length
 
Hallo wir sollten dasselbe Programm schreiben , da ich allerdings noch nicht so die Ahnung habe , weiß ich grad nich wo ich den Code einfügen muss das mein Array sortiert wird .

public class Lottoeinmal {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub


int[] aintZahl = new int[6];
int[] aintVergleich= new int[6];
int i=0 , j=0, test=0, index=0;
double dezimalZahl;

while(i < 6)
{
dezimalZahl = Math.random();
test = (int)Math.round( dezimalZahl * 49 + 1 );

while(j < 6)
{
if(aintZahl[j] == test)
{
dezimalZahl = Math.random();
test = (int)Math.round( dezimalZahl * 49 + 1 );
j = -1;
}
j++;
}
j = 0;
aintZahl = test;
i++;
}


i = 0;
while(i < 6)
{
System.out.print(aintZahl + " ");
i++;

}



wäre nett wenn mir einer den Code so einfügt, dass das Array auch sortiert wird.


Achja wens intressiert das hier ist mein Lösungansatz, welcher aber ein großer fail ist :D
i=0;
j=0;
while (index < 6)
{
test = aintZahl;

while (j < 6)
{
if (aintZahl[j] < test)
{
test=aintZahl[j];
j--;
}
j++;
}
j=0;
aintVergleich=test;
i++;
}

i = 0;
while(i<6)
{
System.out.print(aintVergleich + " ");
i++;

}

}
}



Wenn wer Zeit / Lust hat kann er mir ja noch sagen wie ich diesen verbessern könnte das es läuft ^^
Danke schonmal im vorraus :)
 
Zuletzt bearbeitet:
Zum einen fände ich es planlos deine Hausaufgaben zu machen. Zum anderen stört mich die Tatsache, dass über ArraySort gesprochen wird wenn du in Java nicht mal 2 Zahlen miteinenander vertauschen kannst.

Es gibt mehrere Möglichkeiten in Java Arrays zu sortieren. Bevor du allerdings irgendeine Syntax hernimmst, ohne zu wissen was auch nur im Geringsten dabei abläuft, bringt dir diese Information rein gar nichts für deinen Lernerfolg den du mit dieser Aufgabe haben sollst. Also überleg dir wie du 2 Variablen miteinander vertauschen kannst.

Beispiel:
int a = 2;
int b = 1;
// vertausche a und b mit einer Hilfsvariablen
int cache = b;
b = a;
a = cache;

So und jetzt überleg dir wie du das für ein Array machen sollst wobei du jede Zahl eines Arrays über einen Index bekommst der bei 0 zu zählen beginnt.
 
Das hier ist zwar keine spezifische Antwort, aber man kann Allgemein zum sortieren(wenn man schon unbedingt das Rad neu erfinden will) verschiedene Algorithmen verwenden. Einer davon(der mMn einfachste :)) ist der Selection Sort Algrithmus.
Er funktioniert ungefähr so:

1. Man suche in einem Array ab Position x den kleinsten wert
2. Man vertausche den Wert an Position x mit dem gefunden kleinsten Wert
3. Man erhöhe x um eins.
Das wird so lange gemacht, bis x der Endposition des Arrays entspricht.

Das ganze als Code:
Code:
int[] array={7,5,3,2,8,8};
int hilfsvariable=0;
int index_minimum=0; 

for(int i=0; i<array.length; i++)
{
    index_minimum=i;
     //Den Index des kleinsten Wertes ab Position i im Array suchen
     for(int j=i; j<array.length; j++)
     {
            if(array[j]<array[index_minimum]) 
            {
                  index_minimum=j;
             }
      }
      //Vertauschen des aktuellen Wertes mit dem Mindestindex
      hilfsvariable=array[i];
      array[i]=array[index_minimum];
      array[index_minimum]=hilfsvariable;
}

Ich hoffe ich habe jetzt keine groben Fehler eingebaut:)+
mfg
tXX
 
Zuletzt bearbeitet:
Ihr solltet nicht in einem Forum nach Hilfe fragen, um eure Hausaufgaben gelöst zu bekommen. Wo ist denn bitte sonst der Lerneffekt?

Sortieren in Java ist sehr einfach, die API beschreibt es ganz genau. Diese "elend lange" Tabelle hat ja nicht nur Funktionssignaturen, sondern auch Erklärungen dazu. Ohne sich mit der Dokumentation zu beschäftigen, wird dir/euch jede weitere Aufgabe auch schwer fallen.
Wem die API zu unübersichtlich ist, der kann auch auf der Java Insel vorbei schauen. Aber auch hier gilt: man muss sich mit der Materie auch ein bisschen beschäftigen.
Aller Anfang ist schwer, aber wo ein Wille...

Bei speziellen Fragen kann man ja gerne auch hier nachhaken. Aber wie man beispielsweise die Größe eines Arrays heraus bekommt, steht ganz sicher in euren Unterlagen. Falls, aus welchen Gründen auch immer, ihr die Unterlagen nicht habt, dann findet ihr diese Dinge auch bei den Grundlagen auf jeder x-beliebigen Seite im Netz (siehe oben).
 
Zuletzt bearbeitet:
Zurück
Oben