Lottoproblem!

Status
Nicht offen für weitere Antworten.
R

Ruby

Gast
einen schönen tag euch allen,

weiß nicht ob das schon mal gefragt wurde aber naja ich fang einfach mal an:

Aufgabe: Ein Lottoprogramm schreiben, dass die 6 Gezogenen Zahlen mit seinem Tipp vergleicht.

Bin ganz gut zurecht gekommen doch nun hab ich ein paar Probleme und hoffe das ihr mir helfen könnt. Ich habe den Tipp schon mit einem Array geschrieben und nun fehlt noch die Zufallszahlen möchte diese auch als Arrays schreiben doch wie gebe ich nun Intervall bereiche an sollen ja nur von 1-49 gezogen werden.? 2 Frage wie kann ich vergleichen wie viele Richtig sind? muss ich alle einzelnd mit einander vergleichen? Müsste das ganze am Montag an der FH abgeben bitte daher an schnellst möglich hilfe.

Vielen Dank im voraus

Ruby
 
R

Ruby

Gast
Das ist bisher mein Werk bitte net lachen.

Code:
import java.util.*;
import java.lang.*;
import java.io.*;



public class Spiel {
  public static void main (String args[])throws IOException
	    {  
	     BufferedReader tastatur = new BufferedReader(
                 new InputStreamReader(System.in));

		System.out.println("Dies ist ein Lottospiel,");
		System.out.println("daher geben sie nur zahlen von 1-49 ein");
		System.out.println("");
		{ 
	    int Tip[]=new int[7];
	     for (int t=1; t<7; ++t)
	    {
	    System.out.print("Geben Sie nun ihren " + t+ " Tip ein: ");
		Tip[t]= Integer.parseInt(tastatur.readLine());
		}
	     Arrays.sort(Tip);
	    //Ausgeben der Daten
		System.out.println();	
		System.out.println("--------------------------------------------");
		System.out.print("Sie haben getippt:       ");
	    for (int i = 1; i < 7; ++i) {
	      System.out.print(Tip[i]+" "); 	    
	   }}	     {
		   	 System.out.println();
		   	 Zufallszahlen(args);
		   	 System.out.println();		   	 
			 System.out.println("--------------------------------------------");
		     }}
		 static void  Zufallszahlen (String args[]){
	     BitSet Zahlenmenge = new BitSet();
	     Random r = new Random();

 	     System.out.print("Lottozahlen vom Samstag: ");
	     int gezogene_Zahl = 0;
	     while (gezogene_Zahl  < 6) {
	     int gezogene_Zahl_Wert = 1 + Math.abs(r.nextInt()) % 49;
	     if (!Zahlenmenge .get(gezogene_Zahl_Wert)) {
	        	Zahlenmenge .set(gezogene_Zahl_Wert);
	     ++gezogene_Zahl ;
	     }}
	     for (int i = 1; i <= 49; ++i) {
	     if (Zahlenmenge.get(i)) {
	     System.out.print(i + " ");
	     }}}}
 

Leroy42

Top Contributor
Zufallszahlen:

static final Random rand = new Random();

In einer Schleife

ziehung = rand.nextInt(49) + 1;

Und, ja, du mußt jede Zahl mit jeder vergleichen.
 
G

Guest

Gast
vielen dank,

hab da aber dennoch ein Problem:

Code:
import java.util.*;
import java.lang.*;
import java.io.*;



public class Lottospiel {
  public static void main (String args[])throws IOException
	    {  
	     BufferedReader tastatur = new BufferedReader(
                 new InputStreamReader(System.in));

		System.out.println("Dies ist ein Lottospiel,");
		System.out.println("daher geben sie nur zahlen von 1-49 ein");
		System.out.println("");
		{ 
	    int Tip[]=new int[7];
	     for (int t=1; t<7; ++t)
	    {
	    System.out.print("Geben Sie nun ihren " + t+ " Tip ein: ");
		Tip[t]= Integer.parseInt(tastatur.readLine());
		}
	     Arrays.sort(Tip);
	    //Ausgeben der Daten
		System.out.println();	
		System.out.println("--------------------------------------------");
		System.out.print("Sie haben getippt:       ");
	    for (int i = 1; i < 7; ++i) {
	      System.out.print(Tip[i]+" "); 	    
	   }}	     {
		   	 System.out.println();
		   	 Zufallszahlen(args);
		   	 System.out.println();		   	 
			 System.out.println("--------------------------------------------");
		     }}
		 static void  Zufallszahlen (String args[]){
			 	
			 	int [] zufallszahl=new int [6];
		        Random r = new Random();
		        
			    for (int i = 1; i < 7; ++i){
		         i = r.nextInt(49+1);  
			    
		   				System.out.print(zufallszahl[i]);
		    }}
		}

hier gibt er mir dauernd eine Fehlermeldung??
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
hier gibt er mir dauernd eine Fehlermeldung??

Könntest du eventuell eine davon entbehren und uns hier posten?

Ich meine natürlich nur, wenns nicht allzuviel Umstände bereitet. :oops:

Wir geben sie dir dann auch ganz bestimmt wieder.
 
R

Ruby

Gast
???

Code:
import java.util.*;
import java.lang.*;
import java.io.*;



public class Lottospiel {
  public static void main (String args[])throws IOException
	    {  
	     BufferedReader tastatur = new BufferedReader(
                 new InputStreamReader(System.in));

		System.out.println("Dies ist ein Lottospiel,");
		System.out.println("daher geben sie nur zahlen von 1-49 ein");
		System.out.println("");
		{ 
	    int Tip[]=new int[7];
	     for (int t=1; t<7; ++t)
	    {
	    System.out.print("Geben Sie nun ihren " + t+ " Tip ein: ");
		Tip[t]= Integer.parseInt(tastatur.readLine());
		}
	     Arrays.sort(Tip);
	    //Ausgeben der Daten
		System.out.println();	
		System.out.println("--------------------------------------------");
		System.out.print("Sie haben getippt:       ");
	    for (int i = 1; i < 7; ++i) {
	      System.out.print(Tip[i]+" "); 	    
	   }}	     {
		   	 System.out.println();
		   	 Zufallszahlen(args);
		   	 System.out.println();		   	 
			 System.out.println("--------------------------------------------");
		     }}
		 static void  Zufallszahlen (String args[]){
			 	
			 	int [] zufallszahl=new int [6];
		        Random random = new Random();
		        
			    for (int i = 0; i < 6; ++i){
		        zufallszahl[i] = random.nextInt(49)+1;  
			    Arrays.sort(zufallszahl);
		   		System.out.print(zufallszahl [i]+" ");
		    }}
}

warum sind immer die ersten drei zufallszahlen 0 ???
 
R

Ruby

Gast
???

Code:
import java.util.*;
import java.lang.*;
import java.io.*;



public class Lottospiel {
  public static void main (String args[])throws IOException
	    {  
	     BufferedReader tastatur = new BufferedReader(
                 new InputStreamReader(System.in));

		System.out.println("Dies ist ein Lottospiel,");
		System.out.println("daher geben sie nur zahlen von 1-49 ein");
		System.out.println("");
		{ 
	    int Tip[]=new int[7];
	     for (int t=1; t<7; ++t)
	    {
	    System.out.print("Geben Sie nun ihren " + t+ " Tip ein: ");
		Tip[t]= Integer.parseInt(tastatur.readLine());
		}
	     Arrays.sort(Tip);
	    //Ausgeben der Daten
		System.out.println();	
		System.out.println("--------------------------------------------");
		System.out.print("Sie haben getippt:       ");
	    for (int i = 1; i < 7; ++i) {
	      System.out.print(Tip[i]+" "); 	    
	   }}	     {
		   	 System.out.println();
		   	 Zufallszahlen(args);
		   	 System.out.println();		   	 
			 System.out.println("--------------------------------------------");
		     }}
		 static void  Zufallszahlen (String args[]){
			 	
			 	int [] zufallszahl=new int [6];
		        Random random = new Random();
		        
			    for (int i = 0; i < 6; ++i){
		        zufallszahl[i] = random.nextInt(49)+1;  
			    Arrays.sort(zufallszahl);
		   		System.out.print(zufallszahl [i]+" ");
		    }}
}

warum sind immer die ersten drei zufallszahlen 0 ???
 

Leroy42

Top Contributor
LOL

Weil du nach jeder einzelnen Zufallszahl dein Array sortierst.

Es muß nur am Ende sortiert werden.
 
G

Guest

Gast
^^ sry

aber wenn ich das am ende schreibe juckt das den net :(

Code:
    int [] zufallszahl=new int [6];
              Random random = new Random();

             for (int i = 0; i < 6; ++i){
              zufallszahl[i] = random.nextInt(49)+1; 

               System.out.print(zufallszahl [i]+" ");               
         }
             Arrays.sort(zufallszahl);
             }
}
 

L-ectron-X

Gesperrter Benutzer
Lege die Zufallszahlen in ein HashSet, das lässt von Hause aus keine Duplikate zu.
In einer Schleife kannst du das HashSet dann so lange mit Zufallszahlen füllen, bis die gewünschte Anzahl Zufallszahlen im Set gespeichert wurde.
 
G

Guest

Gast
thx für den tip hashset??? sry bin kein java pro wie ihr

wie geht das und wie mach ich das?
 
G

Guest

Gast
oje ist das kompliziert

kann man nicht die arrays abgleichen das man so den doppelten aus dem weg geht?

und nochmal thx für die hilfe
 

L-ectron-X

Gesperrter Benutzer
Meiner Meinung nach, was das kompilierter, als die Verwendung eines HashSets.
Eine Duplikatprüfung für eine Array-Lösung kann so aussehen:
Code:
     while(aktuellerTipp < zahlen.length) { 
      int gezogeneZahl = (int)(Math.random() * 100); 
      
      //Kontrolle ob Zahl in gesuchten Wertebereich passt 
      if(gezogeneZahl < 1 || gezogeneZahl > 49) 
        continue; 
      else { 
         zahlen[aktuellerTipp] = gezogeneZahl; 
          
        //Duplikatprüfung 
        for(int i = 0; i < aktuellerTipp; i++) { 
          if(zahlen[i] == gezogeneZahl) { 
               aktuellerTipp--; 
          } 
        } 
      } 
      aktuellerTipp++; 
    }
 
G

Guest

Gast
ja aber wenn ich ein hashset habe kann ich doch net mit einem array vergleichen oder? sry bin halt noch ziemlich grün hinter den ohren was programmieren angeht
 

L-ectron-X

Gesperrter Benutzer
Entweder HashSet oder Array. Ein HashSet ist auch nur ein Behälter für Objekte.

-HashSet erzeugen
-in einer while-Schleife Zufallszahlen erzeugen und ins HashSet speichern
-im Kopf der while-Schleife prüfen, wie viele Zahlen das HasSet enthält und entspr. Bedingung setzen
Code:
int menge = 6;
HashSet set = new HashSet(menge);
while(set.size() < menge) {
   set.add(erzeugeZufallsZahl());
}

Im Prinzip ähnlich einem Array nur viel komfortabler.
 
G

Guest

Gast
thx denke werde mit arrays arbeiten ist mir vertrauter und hab ja net mehr so viel zeit, aber mal was anderes wie vergleiche ich den ob nur 3 richtig sind? kann doch net sagen wenn nur 3 richtig sind da müsste ich ja alle variablen gleich setzen und vergleichen oder?
 
R

Ruby

Gast
Code:
import java.util.*;
import java.lang.*;
import java.io.*;

public class Lottospiel {
  public static void main (String args[])throws IOException
       { 
        BufferedReader tastatur = new BufferedReader(
                 new InputStreamReader(System.in));

      System.out.println("Dies ist ein Lottospiel,");
      System.out.println("daher geben sie nur zahlen von 1-49 ein");
      System.out.println("");
      {
       int Tip[]=new int[7];
        for (int t=1; t<7; ++t)
       {
       System.out.print("Geben Sie nun ihren " + t+ " Tip ein: ");
      Tip[t]= Integer.parseInt(tastatur.readLine());
      }
        Arrays.sort(Tip);
       //Ausgeben der Daten
      System.out.println();   
      System.out.println("--------------------------------------------");
      System.out.print("Sie haben getippt:       ");
       for (int i = 1; i < 7; ++i) {
         System.out.print(Tip[i]+" ");       
      }}        {
             System.out.println();
             Zufallszahlen(args);
             System.out.println();            
          System.out.println("--------------------------------------------");
           }}
       static void  Zufallszahlen (String args[]){
             
             int [] zufallszahl=new int [6];
              Random random = new Random();
             
             for (int i = 0; i < 6; ++i){
              zufallszahl[i] = random.nextInt(49)+1; 

               System.out.print(zufallszahl [i]+" ");
          }} int ermittleTreffer (int [] tips, int [] auslosung)
          {
              int treffer = 0;
              System.out.println(treffer);
              for (int i = 0; i < tips.length; ++i)
              {
                      int tip = tips[i];

                      for (int j = 0; j < auslosung.length; ++j)
                      {
                              int los = auslosung[j];
                              if (los == tip)
                                      ++treffer;
                      }
              }
              return treffer;
}
}

warum liefert er da keine treffer aus?

vielen dank im voraus
 
G

Guest

Gast
hab da eine frage bei einem teil des codes

hier erstmal der ganze code:

Code:
import java.util.*;
import java.io.*;

public class Lottospiel
{
        public static void main(String args[])
        {
                new Lottospiel();
        }

        public Lottospiel()
        {
                spielstart();
        }

        private void spielstart()
        {
                BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Dies ist ein Lottospiel,");
                System.out.println("daher geben sie nur Zahlen von 1-49 ein.");
                System.out.println("");
                int tip[] = new int[6];
                try
                {
                        for (int t = 0; t < 6; ++t)
                        {
                                System.out.print("Geben Sie nun ihren " + (t + 1)
                                                + " Tip ein: ");
                                tip[t] = Integer.parseInt(tastatur.readLine());
                        }
                }
                catch (IOException e)
                {
                        e.printStackTrace();
                }
                Arrays.sort(tip);
                System.out.println();
                System.out.println("--------------------------------------------");
                System.out.print("Sie haben getippt: ");
                for (int i = 0; i < 6; ++i)
                {
                        System.out.print(tip[i] + " ");
                }
                System.out.println();
                System.out.println("--------------------------------------------");
                int[] auslosung = zufallszahlen();
                System.out.print("Auslosung: ");
                for (int i = 0; i < 6; i++)
                {
                        System.out.print(auslosung[i] + " ");
                }
                System.out.println();
                System.out.println(gibTreffer(tip, auslosung));
                System.out.println("--------------------------------------------");
                System.out.println("Lottospiel beendet");
        }

        private int[] zufallszahlen()
        {
                int[] zufallszahl = new int[6];
                int[] zufallszahl2 = new int[49];
                Random random = new Random();

                for (int i = 0; i < 49; i++)
                {
                        zufallszahl2[i] = i + 1;
                }

                for (int i = 49; i > 43; i--)
                {
                        final int zufall = random.nextInt(i) + 1;
                        zufallszahl[i - 44] = zufallszahl2[zufall];
                        final int tauschvar = zufallszahl2[i - 1];
                        zufallszahl2[i - 1] = zufallszahl2[zufall];
                        zufallszahl2[zufall] = tauschvar;
                }

                Arrays.sort(zufallszahl);
                return zufallszahl;
        }

        private String gibTreffer(int[] tips, int[] auslosung)
        {
                String ergebnis = " Treffer: ";
                int treffer = 0;
                for (int i = 0; i < tips.length; ++i)
                {
                        int tip = tips[i];
                        for (int j = 0; j < auslosung.length; ++j)
                        {
                                int los = auslosung[j];
                                if (los == tip)
                                {
                                        treffer++;
                                        ergebnis = ergebnis + los + ", ";
                                }
                        }
                }
                ergebnis = treffer + ergebnis.substring(0, ergebnis.length() - 2);
                return ergebnis;
        }
}

nun meine frage warum ????

Code:
                for (int i = 49; i > 43; i--)
                {
                        final int zufall = random.nextInt(i) + 1;
                        zufallszahl[i - 44] = zufallszahl2[zufall];
                        final int tauschvar = zufallszahl2[i - 1];
                        zufallszahl2[i - 1] = zufallszahl2[zufall];
                        zufallszahl2[zufall] = tauschvar;
                }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben