Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

wuerfelprogramm

Empfohlene Antworten

Veröffentlicht

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. ;)

Hallo lexa,

bitte benutze

 tags für deinen Quellcode.

Gruß Jaraz

Hallo.

Danke für deine Antwort.

Aber was sind

 tags ?

Der Anfang sieht gut aus. Doch in der letzten Schleife ermittelst Du das Minimum, warum auch immer. Wo hängt's denn genau?

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.