Frage zu "Lottozahlen"

Status
Nicht offen für weitere Antworten.

bugmenot

Mitglied
Hallo Guys,
Ich habe mal ne Aufgebanestellung aus meinem INF LK mitgebracht.
Wir haben dieses Prog dazu bekommen:

Code:
 import java.util.*;

public class Zufall
{
   private static Random r;
   private static boolean rWurdeErzeugt = false;

   public static int zahl (int n) {
       if (!rWurdeErzeugt) {
           r = new Random();
           rWurdeErzeugt = true;
       }
       int i;
       i = r.nextInt(n);  
       i = i+1;
       return i;
    }
}

Jetzt sagte er uns wir sollen daraus ein Programm schreiben was das ziehen der Lottozahlen simuliert, aber das is für mich undenkbar, ich KANNS einfach nict.
Könntet ihr vll. mal was rudimentäres schreiben und dan gleich mit Kommentaren? PLS

MFG Bugg
 

Andi87

Mitglied
Ihr lernt in der Schule java? In welcher Klasse denn?

z.B.
Code:
int zufallsZahl = Zufall.zahl(49)
liefert dir eine Zufallszahl aus 49.... naja und wenn du das 6x (z.b. in einer Schleife) aufrufst hast du 6 Zufallszahlen.
 
G

Gast

Gast
@l-ectron: richtig

Nichts desto trotz finde ich den "Zufallsgenerator schon etwas umständlich... aber gut, er ist immer noch leicht verständlich und sollte bei richtiger Benutzung die gewünschten Zahlen liefern.

@Thread Ersteller:

Du hast LK und kommst noch nicht mal ansatzweise auf die Aufgabenstellung klar?! Soetwas ist mir unbegreiflich...
 

bugmenot

Mitglied
Na hab du mal 3 Wochen lang Fieber...
Dan verpasst du auch nichts mitbekommen
Ich versuch halt atm wieder rein zu komen
 
S

SlaterB

Gast
'intelligente Ausrede' könnte man sagen nach eher plumpen Beginn,
aber das bringt nix, sowas musst du mit deinem Lehrer klären,

ein einfaches Lehrbuch zu absoluten Grundlagen lesen wäre auch denkbar
 

bugmenot

Mitglied
OK ich habs nich nötig mich zu rechtfertigen oder im Stoff hinterher zu hängen, türlich könnt ich auch die anderen ausm Kurs fragen nur iwie lässt das mein Stolz nich zu^^

Achja ich bin in der 12
 

L-ectron-X

Gesperrter Benutzer
Aber dein Stolz lässt es zu, später die Arbeit von anderen als deine eigene auszugeben?
Schäm dich!
 

bugmenot

Mitglied
Ja es geht^^
Und um der Warheit die Ehre zu geben, in 2 Wochen sind die ersten Klausuren und dan wirds eng.
Wen ihr meint die Zufalls Funktion wäre kompliziert, wie würdet ihrs machen? Wie gesagt bitte mit Erklärung oder schliest den Thread hier einfach, aber diese Ethik Diskusion is doch scheise.

EDIT: Oo Is die Programmzeile da oben lauffähig? Also die Random Zahl aus 49?
Das is dan aber ne Java eigene Klasse oder?
 

L-ectron-X

Gesperrter Benutzer
Ich hab den Verdacht, dass du gar nichts lernen willst. Du möchtest immer nur von uns was bekommen.
Aber hier gehts anders rum. Erst, wenn wir was von dir bekommen haben, nämlich etwas Vorarbeit von dir, ein paar Gedanken, konkrete Fragen zu einem Problem etc., kannst du etwas von uns erwarten.
Eine Aufgabenstellung ins Forum zu werfen und eine fertige Lösung zu erwarten, ist einfach zu plump (um's mit SlaterB's Worten auszudrücken).
 
S

SlaterB

Gast
> EDIT: Oo Is die Programmzeile da oben lauffähig? Also die Random Zahl aus 49?
> Das is dan aber ne Java eigene Klasse oder?

Zufall ist doch die Klasse, die du gepostet hast..
 

florian1x

Aktives Mitglied
Also man muss die aufgaben ja net kommplett für ihn machen aber ihm eine hilfestellung zu geben is ja auch ent verkehrt.

Deine Klasse "Zufall" ...
Code:
 import java.util.*;

public class Zufall
{
   private static Random r;
   private static boolean rWurdeErzeugt = false;

   public static int zahl (int n) {
       if (!rWurdeErzeugt) {
           r = new Random();
           rWurdeErzeugt = true;
       }
       int i;
       i = r.nextInt(n); 
       i = i+1;
       return i;
    }
}

... erzeugt sofern ich nicht falsch liege. Zufallszahlen. (Klasse Zufall sollte im selben verzeichnis liegen)
Da es eine statische Methode ist, musst du auch kein Objekt initialisieren.
Der Aufruf der methode zahl geht über den Klassennamen und funktioniert wie folgt

Andi87 hat gesagt.:
Code:
int zufallsZahl = Zufall.zahl(49)

Der Methode "zahl" wird hierbei ein Integer Parameter übergeben welche den bereich kenzeichnet in dem
die Zufallszahl steckt. Bei 49 wäre das der Bereich 1-49.

So und da ich denke dass euer Spiel über die Konsole ausgegeben werden soll, ist vlt noch der Befehl wichtig
Code:
System.out.print(""); //Schreibt etwas in die derzeitige Reihe
und
Code:
System.out.println("");//Schreibt etwas in eine neue Reihe

So nun musst du nurnoch 6 Zahlen erzeugen und über die Konsole ausgeben

Tipps:
-nimm ne schleife .. am besten die For schleife und erzeuge deine 6 zahlen
-überprüfe ob deine per Zufall erzeugte zahl schon vorkam wenn ja setz den zählerindex einen zurück damit er noch einmal länger eine zahl erzeugt.

ka ob alles stimmt was ich gesagt hab aber ich glaube es.
und vlt hilft es ja auch wenns mehr eine zusamnenfassung der beiträge zuvor is
 

bugmenot

Mitglied
So ich hab nu:

Code:
public class Proggi
{
    public static void main (String[] args)
        {
            (int zah1_1 = 0; int zah1_2 = 0; int zahl_3 = 0; int zah1_4 = 0; int zah1_5 = 0; int zahl_6 = 0;)
                {
                    zahl_1 = Zufall.zahl (100);
                    zahl_2 = Zufall.zahl (100);
                    zahl_3 = Zufall.zahl (100);
                    zahl_4 = Zufall.zahl (100);
                    zahl_5 = Zufall.zahl (100);
                    zahl_6 = Zufall.zahl (100);
                }
                System.out.println("Das sind ihre Lotto Zahlen" + zahl_1 zahl_2 zahl_3 zahl_4 zahl_5 zahl_6);

            }
        }

Das überprüfen auf doppelzahl kommt noch, wollt erstmal nen Grundriss haben.
gibt beim Compilen aber noch Probleme. Werd da mal weiter dran arbeiten.
//Flame on
 

moormaster

Top Contributor
florian1x hat gesagt.:
Code:
System.out.print(""); //Schreibt etwas in die derzeitige Reihe
Jap...

und
Code:
System.out.println("");//Schreibt etwas in eine neue Reihe

Nein. Die Methode println schreibt auch in die aktuelle "Reihe", auch als Zeile bekannt :D, hängt jedoch einen Zeilenumbruch ans Ende der Ausgabe und beginnt somit eine neue Zeile >hinter< der Ausgabe.
 

florian1x

Aktives Mitglied
gut zu wissen :)
und sorry für meine falschaussage

ehm der anfang is schonma gut

@Bugmenot
aber ich empfehle ein array
Code:
private int[] iZahl = new int[6+1];// +1 damit man von 1 an und net von null aus zählen kann

und die überprüfung kannste dann das schreib ich jetzt ma einfach so in folgende methide packen
Code:
          public boolean check(int value){

		for(int i=0;i<=iZahl.length;i++){

			if(iZahl[i]==value){
				return false; //Zahl ist schoneinma vorgekommen, gebe false zurück
			}

		}
		return true;

	}

Also die funktion überprüft bei jedem feld ob der angegene wert schon vorhanden ist

aufruf:

Code:
check(40); //überprüft ob im array 40 enthalten ist

ich habs noch net ausprobiert also garantiere ich net für die funktionalität
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben