tanseleratus
Grünschnabel
Hallo!
Ich habe ein Programm geschrieben in dem 100 Zufallszahlen von 1-20 erstellt werden. Von diesen 100 Zahlen sollen die 5 häufigsten Zahlen heraus gefunden werden und diese der Reihefolge nach sotiert werden.
Dazu habe ich ein einfaches und doch kompliziertes^^ Beispielprogramm geschrieben das so aussieht:
nicht schön, aber selten
Das Problem dabei ist(was mir erst nach Stunden aufgefallen ist), dass bei der Umwandlung in Double bei den Zahlen 10 und 20 die 0 wegfällt, wenn es in ein String zurück gewandelt wird. Dadurch kommen die Zahlen 1 und 2 zweimal vor.
Habe dann versucht es mit LinkedList, TreeMap, Collections usw. (mit denen ich mich nicht so wirklich gut auskenne) zu machen, aber dabei würden dann immer die Zahlen von 1-20 sortiert und nicht die Häufigkeit.
Als ich es mal geschaft habe mit TreeMap.higherKey() die Häufigkeit zu sortieren, hatte ich dass Problem, dass wenn die Häufkeit bei mehreren Zahlen gleich war, diese in der TreeMap überschrieben würden.
Um nochmal zu verdeutlichen was das Programm tun soll hier ein Beispiel:
100 Zufallszahlen von 1-20 werden erstellt. Davon von kamen die Zahlen sooft vor:
1 = 2x
2 = 5x
3 = 1x
4 = 10x
5 = 6x
... usw.
Die Häufigsten 3 heraussuchen: 4 5 2
Nach der Reihenfolge sotieren: 2 4 5
Hoffe ich habe mein Problem genau genug erklärt um es zu verstehn.
Ich habe ein Programm geschrieben in dem 100 Zufallszahlen von 1-20 erstellt werden. Von diesen 100 Zahlen sollen die 5 häufigsten Zahlen heraus gefunden werden und diese der Reihefolge nach sotiert werden.
Dazu habe ich ein einfaches und doch kompliziertes^^ Beispielprogramm geschrieben das so aussieht:
Java:
import java.util.Arrays;
public class Sortierer
{
public static void main(String[] args)
{
String[] temp = new String[20];
double[] n_temp = new double[20];
int[] numbers = new int[20],
end_numbers = new int[5];
for(int i = 0; i < 100; i++)
{
double n = Math.random()*20;
numbers[(int)n]++;
}
for(int i = 0; i < 20; i++)
{
temp[i] = String.valueOf(numbers[i]) + "." + String.valueOf(i+1);
n_temp[i] = Double.parseDouble(temp[i]);
}
Arrays.sort(n_temp);
for(int i = 15; i < 20; i++)
{
temp[i] = String.valueOf(n_temp[i]);
temp[i] = temp[i].substring(temp[i].indexOf(".")+1,temp[i].length());
end_numbers[i-15] = Integer.parseInt(temp[i]);
}
Arrays.sort(end_numbers);
String str = " Zahlen:";
for(int i = 0; i < 5; i++)
{
str += " " + end_numbers[i];
}
System.out.println(str);
}
}
nicht schön, aber selten

Das Problem dabei ist(was mir erst nach Stunden aufgefallen ist), dass bei der Umwandlung in Double bei den Zahlen 10 und 20 die 0 wegfällt, wenn es in ein String zurück gewandelt wird. Dadurch kommen die Zahlen 1 und 2 zweimal vor.
Habe dann versucht es mit LinkedList, TreeMap, Collections usw. (mit denen ich mich nicht so wirklich gut auskenne) zu machen, aber dabei würden dann immer die Zahlen von 1-20 sortiert und nicht die Häufigkeit.
Als ich es mal geschaft habe mit TreeMap.higherKey() die Häufigkeit zu sortieren, hatte ich dass Problem, dass wenn die Häufkeit bei mehreren Zahlen gleich war, diese in der TreeMap überschrieben würden.
Um nochmal zu verdeutlichen was das Programm tun soll hier ein Beispiel:
100 Zufallszahlen von 1-20 werden erstellt. Davon von kamen die Zahlen sooft vor:
1 = 2x
2 = 5x
3 = 1x
4 = 10x
5 = 6x
... usw.
Die Häufigsten 3 heraussuchen: 4 5 2
Nach der Reihenfolge sotieren: 2 4 5
Hoffe ich habe mein Problem genau genug erklärt um es zu verstehn.
Zuletzt bearbeitet: