Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
also um es gleich mal auf den punkt zu bringen ich besuche gerade eine schulart bei der wir einwenig in java programmierung einsteigen und die grundbefehle etc. lernen am freitag steht jetzt eine arbeit an und ich versuche ein wenig darauf zu lernen und mich vorzubereiten.
vor kurzem hatten wir ein projekt bei dem wir ein programm machen sollten (mit arrays und schleifen)
das 7 "lotto"zahlen zieht ( nach dem prinzip 1-49)
naja ich versuche mich jetzt grad an der übungsaufgabe aber scheitere, die arbeitsblätter die wir bekommen haben helfen mir auch nicht recht weiter :-/
hier mal mein bisheriger code
Java:
import java.util.Random;
/**
* dieses Programm zieht zufällige Lottozahlen
*
* @Autor (Patrick)
* @version (1.0)
*/
public class lotto2
{
public static void main (String[] args)
{
int[] GezogeneZahlen = new int[6];
Random generator = new Random();
int x = generator.nextInt(48) + 1;
for (int a=0; a>=6; a++ )
{
GezogeneZahlen[a] = x;
System.out.print(GezogeneZahlen[a]);
}
}
}
wir benutzen BlueJ (keine ahnung ob das relevant ist oder nicht)
ja ich wusste nich genau wo ich es rein machen sollte ...sorry ^^
wie meinst du das generierung und ausgabe trennen ?
E: ich hab das mit absicht von 0-48 generieren lassen, und erst danach dann +1 damit die zahlen von 1-49 reichen (schonmal 0 in ner lotto ziehung gesehn ?^^)
generator.nextInt(48) generiert die Zahlen im Bereich 0..47 und nicht 0..48. Eben so wie es in der Api steht.
Naja, du hast ja eine Schleife, wo generiert wird und direkt ausgegeben. Mach 2 Schleife: die eine füllt nur das Array und die andere gibt nur das Array aus.
import java.util.Random;
/**
* dieses Programm zieht zufällige Lottozahlen
*
* @Autor (Patrick)
* @version (1.0)
*/
public class lotto2
{
public static void main (String[] args)
{
int[] GezogeneZahlen = new int[6];
Random generator = new Random();
for (int a=0; a>=6; a++ )
{
int x = generator.nextInt(49) + 1;
GezogeneZahlen[a] = x;
System.out.print(GezogeneZahlen[a]);
}
}
}
das wäre also jetzt der neue code, hab den vorschlag mal mit eingearbeitet x in der schleife zu definieren (wenn ich das jetzt richtig verstanden habe)
aber wie das mit "generierung und ausgabe trennen" gemeint ist weis ich immernoch nicht :-/
bin halt ziemlich neu was das alles angeht
--> learn it by doing ^^
E: also nur mal rein theoretisch, würde das programm so laufen, was denkt ihr ?
ich persönlich würde sagen es müsste laufen, BlueJ sieht das aber anderst. Bis zum Compilieren geht alles noch einwandfrei aber es wird einfach kein Textfeld geöffnet das die Zahlen die im array sind ausgibt
ja das mit den doppelten zahlen wollte ich erst angehn wenn ich das 1. problem gelöst habe
step by step eben
ok danke, dann werd ich gleich mal suchen
E: hab mal deine schleife eingesetzt in meinen code und "GezogeneZahlen" abgeändert in "gezogeneZahlen"
das problem hierbei ist jetzt das ich anstatt 6 zahlen, 12 ausgegben bekomme ^^
hier der code:
Java:
import java.util.Random;
/**
* dieses Programm zieht zufällige Lottozahlen
*
* @Autor (Patrick)
* @version (1.0)
*/
public class lotto2
{
public static void main (String[] args)
{
int[] gezogeneZahlen = new int[6];
Random generator = new Random();
for (int a=0; a<gezogeneZahlen.length; a++ ) {
int x = generator.nextInt(49) + 1;
gezogeneZahlen[a] = x; //Variablen fangen mit Kleinbuchstaben an
}
for (int a=0; a<gezogeneZahlen.length; a++ ) {
System.out.print(gezogeneZahlen[a]);
}
}
}
also, ich glaube du willst auf ">=" hinaus oder ? so haben wir das in der schule gelernt und da geht das auch, kann das evtl an der version der java plattform (aka: Java DevelopmentKit wenn ich mich nich irre ?) liegen ?
E: ohhh, ja jetzt seh ichs auch xD es sollte wenn dann überhaupt a<=6 sein und nicht a>=6 ^^
würde ja nur ändern das dann zwischen den zahlen ein leerzeichen ist, was mich aber stört ist das es 12 zahlen sind ...und ich bei gott nich darauf komme warum 12 zahlen gezogen werden ?
Wenn du mit "Zahlen" Zeichen meinst, dann ist es klar. Wenn er z.B. 12 udn 65 generiert, dann sieht es so aus: "1265" (2 Zahlen, aber 4 Zeichen)
Wenn du wirklich Zahlen meinst, dann hast du vermutlich in der 1. Schleife auch noch die Ausgabe stehen.
trenne doch erstmal die einzelnen zahlen wie oben schon gesagt und dann weißt du auch wieviel zahlen er ausgibt!! und wenns dann immernoch 12 sind was ich aber eher nicht glaube dann schau weiter:toll:
sry, das hab ich noch net bedacht, manchmal sitz ich einfach aufm schlauch ^^
E: so hab grad versucht mal zu überprüfen ob eine zahl schon gezogen wurde,
theorie -> man zieht alle 6 zahlen überprüft dann ob eine doppelt vorkommt
Java:
public class lotto2
{
public static void main (String[] args)
{
int[] gezogeneZahlen = new int[7];
Random generator = new Random();
for (int a=0; a<gezogeneZahlen.length; a++){
gezogeneZahlen[a]=0;
}
for (int a=0; a<gezogeneZahlen.length; a++ ) {
int x = generator.nextInt(49) + 1;
gezogeneZahlen[a] = x;
if (a==6){
if (gezogeneZahlen[a]==gezogeneZahlen[a-1] | x==gezogeneZahlen[a-2] | x==gezogeneZahlen[a-3]| x==gezogeneZahlen[a-4]| x==gezogeneZahlen[a-5]| x==gezogeneZahlen[a-6]){
gezogeneZahlen[a] = x;
}
}
}
}
}
also da sind noch einige fehler drin aber ich weis grad nicht wie ich weiter machen soll :-/
Vorne weg, ich würde es anders machen. Wenn wir aber bei dem Array bleiben wollen, brauchen wir eine Methode die prüft ob die Zahl schon enthalten ist. Das machst du aktuell mit deiner :autsch: if-Abfrage.
macht keinen sinn, da du ganz am Ende prüfst ob die letzte Zahl identisch ist. Es kann aber schon die 2. mit der ersten identisch sein.
Also Schritte:
Zahl generieren : DONE
Zahl überprüfen ob schon vorhanden : TODO
Wenn Zahl vorhanden neue Zahl für das AKTUELLE Feld im Array generieren: TODO (Index bearbeiten)
Wenn Zahl nicht vorhanden normal einfügen: DONE
Meine Alternative wäre diese und das soll keine Lösung sein. Mach ruhig dein Programm mit dem Array fertig.
Java:
List<Integer> gezogeneZahlen = new ArrayList<Integer>();
Random generator = new Random();
for (gezogeneZahlen.size(); gezogeneZahlen.size()<6;) {
int x = generator.nextInt(49) + 1;
if(!gezogeneZahlen.contains(x)){
gezogeneZahlen.add(x);
}
}
ich würde es auch lieber ohne array machen, aber unser lehrer will das wir mit arrays arbeiten :-/
naja und befehle wie gezogeneZahlen.size oder ähnliche haben wir bisher im unterricht noch nicht durchgenommen also denke ich wird er evtl. was dagegen haben wenn wir das in der arbeit morgen benutzen