lexa Geschrieben 14. Februar 2007 Teilen Geschrieben 14. Februar 2007 Hallo. Ich hab mal wieder ein Problem. Ich muss ein Programm schreiben, dass mit zufallszahlen wuerfelt. dann soll es die Häufigkeit der gewuerfelten Zahlen ausgeben und die kleinste, bzw. größte Häufigkeit ausgeben. Schlließlich soll ich noch die Differenz der Häufigkeiten berechnen. mein Problem ist nun: Das Maximum krieg ich nicht berechnet. Mein Programm. import javax.swing.*; public class wuerfeln { int wuerfe; int flaeche; public wuerfeln() { AnzahlderFlaecheneingeben(); AnzahlderWuerfeeingeben(); // wuerfelnundHaeufigkeitbestimmen(); maximaleHaeufigkeit(); minimaleHaeufigkeit (); //Haeufigkeitausgeben(); } public void AnzahlderFlaecheneingeben() { String s = JOptionPane.showInputDialog("Anzahl der Flächen eingeben:"); flaeche =Integer.parseInt (s); } public void AnzahlderWuerfeeingeben() { String p = JOptionPane.showInputDialog("Anzahl der Würfe eingeben:"); wuerfe =Integer.parseInt (p); } int[] verteilung = new int[flaeche]; int zufallsZahl = (int)(Math.random()*flaeche); public void maximaleHaeufigkeit() { int[] verteilung = new int[flaeche]; //Initialisierung int zufallsZahl; int min = 0, anzahlMin = 0; for (int i = 0; i < flaeche; i++) { verteilung[i]=0; } for (int i = 1; i <= wuerfe; i++) { zufallsZahl = (int)(Math.random()*flaeche); verteilung[zufallsZahl]++; } for (int i = 0; i <flaeche; i++) { System.out.print("Haeufigkeit von "+i+": "); System.out.println(verteilung[i]); if(verteilung[i] <= min) { if(verteilung[i] < min) { min = verteilung[i]; anzahlMin = 1; } else { //hier ist verteilung[i]=max anzahlMin++; } } } System.out.println("Min: "+min +" Anzahl: "+anzahlMin); } public void minimaleHaeufigkeit () { int[] verteilung = new int[flaeche]; //Initialisierung int zufallsZahl; zufallsZahl = (int)(Math.random()*flaeche); int max = 0, anzahlMax = 0; max=verteilung[zufallsZahl]; for (int i=1; i<wuerfe; i++) if (verteilung[i]>max) max=verteilung[i]; System.out.println("Das Maximum ist :"+max ); System.out.println( ); } } Ich hoffe jemand kann mir helfen. Bis jetzt ist mir in diesem Forum super geholfen worden. Danke viel mals. PS: blondienen sollten lieber kein Informatik wählen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 14. Februar 2007 Teilen Geschrieben 14. Februar 2007 Hallo lexa, bitte benutze tags für deinen Quellcode. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lexa Geschrieben 14. Februar 2007 Autor Teilen Geschrieben 14. Februar 2007 Hallo. Danke für deine Antwort. Aber was sind tags ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 Der Anfang sieht gut aus. Doch in der letzten Schleife ermittelst Du das Minimum, warum auch immer. Wo hängt's denn genau? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 Guten Morgen, so, dann werde ich mal anfangen zu meckern! Du solltest bei Deinem Code darauf achten, ihn vernünftig auszurichten. Achte auf Einrückungen und einheitliche Abstände, dann wird er leichter lesbar. Eine IDE unterstützt Dich dabei (bei Eclipse mit Strg+Shif+F). Dann verwende die Benamung, die bei Eclipse vorgesehen ist. Klassen haben einen großen Anfangsbuchstaben, Methoden und Variablen einen kleinen. Neue Wörter innerhalb des Namens bekommen einen großen Anfangsbuchstaben spendiert. Jetzt zum Code. Deine Methoden heißen minimaleHaeufigkeit und maximaleHaeufigkeit, am Ende der Methode wird jedoch genau das Gegenteil ausgegeben (z.B. "Das Maximum ist..." in minimaleHaeufigkeit). Ich spreche jetzt nur über die Methode minimaleHaeufigkeit, weil die interessanter ist und die maximaleHaeufigkeit genauso funktioniert nur mit einem anderen Vergleich. Du startest Deine for-Schleife bei 1, lässt also das erste Element im Array aus (der Index startet bei 0). Ansonsten machst Du den Vergleich richtig (wenn Du das Maximum haben willst, wonach es bis auf den Namen der Methode aussieht). Zieh die Sachen mal gerade, dann sollte es passen. Und die minimaleHaeufigkeit sollte dann einen Kleinigkeit für Dich sein. Übrigens - die Haarfarbe hat nichts damit zu tun. Ich habe blonde Kommiliton(inn)en, die sehr gut sind. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 15. Februar 2007 Teilen Geschrieben 15. Februar 2007 Servus nochmal, meine 15 Minuten Zeit zum editieren sind vorbei, deshalb antworte ich mir selbst. Ich habe mit mal Deine Methoden noch ein wenig genauer angesehen, die funktionieren ja abgesehen von den o.a. Sachen überhaupt noch nicht. Ich habe Dir mal die Methode zur Ermittlung des Minimums vorbereitet. Die ist nicht schön, aber sie funktioniert. Schön machen kannst Du sie selbst. public void minimaleHaeufigkeit() { // Initialisierung der Verteilung, mehr brauchst du für die Ausgaben nicht int[] verteilung = new int[flaeche]; // Initialisierung int zufallsZahl; int min = 0, anzahlMin = 0; // Ich arbeite lieber mit Random, weil ich dort schöner angeben kann, was ich will Random random = new Random(); // hier wird gewürfelt for (int i = 0; i < wuerfe; i++) { // ich will nämlich eine Zahl zwischen 0 und 5, an die ich 1 addieren kann zufallsZahl = random.nextInt(6) + 1; System.out.println("gewürfelt: " + zufallsZahl); // ich erhöhe im Verteilungsarray den Zähler für die gewürfelte Zahl verteilung[zufallsZahl - 1]++; } // jetzt wird ausgewertet for (int i = 0; i < flaeche; i++) { System.out.println("Haeufigkeit von " + (i + 1) + ": " + verteilung[i]); // ich durchlaufe ja nur das Verteilungsarray und nicht die gewürfelten Werte, deshalb fällt hier die "Standard" Minimumberechnung weg. Ich will wissen, ob ich schon ein Minimum habe. Wenn nicht, dann prüfe ich, ob die aktuelle Zahl gewürfelt wurde und trage diese bei Bedarf als Minimum ein. In dieses if wird also nur einmal gegangen if (min == 0 && verteilung[i] != 0) { min = i + 1; } } System.out.println("Min: " + min + " Anzahl: " + anzahlMin); } So, den Rest kannst Du ja jetzt alleine. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.