| Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann. |
Diskussion: Lottosimulation im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige japp ich weiß ich könnte editieren und nicht noch ma antworten. Aber ich habe verflucht lange gebraucht um diesen ...
![]() |
| | #31 (permalink) |
| Registriert seit: 31.10.10 ![]() Likes: 0 | Anzeige japp ich weiß ich könnte editieren und nicht noch ma antworten. Aber ich habe verflucht lange gebraucht um diesen Fehler zu finden und vllt gibt es ja noch einen blutigen Anfänger der das liest, und der soll sich diese Zeit sparen Eentschuldigt meine vollgerümpelte Main, ist spät, ich hab kein bock mehr! Und mein riesen Problem was eigentlich gar nicht schwer zu lösen war, war in der verschachtelten forschleife und ist gelöst hier ab Zeile 30. In meinem vorherigen Post gehts net, weil trotzdem, dass eine doppelte zahl erkannt wird wurde sie ausgegeben und danach 1 Lottozahl zu viel gezogen (weil ja i-- und nochmal der schleifendurchlauf)... Code: import java.io.*;
public class LottoSimulation
{
public static void main (String[] args)
{
System.out.println("Willkommen bei Lotto Simulation >>6 aus 49<<");
int tipp[] = new int [6];
int richtig = 0; // wird für Übereinstimmung benötigt
for (int i=0; i<6; i++)
{
tipp[i] = gettipp(i);
for(int j=0; j<i; j++)
{
if(tipp[i]==tipp[j]){
System.out.println("Sie haben diese Zahl bereits getippt!");
i--;
break;
}
}
}
int ergebnis[] = new int [6];
int abbruch=0;
// AB HIER ***************************************************************
System.out.println("Die Lottoziehung ergab folgendes Ergebnis: ");
for (int i=0; i<6; i++)
{
ergebnis[i] = ziehung();
if (ergebnis[i]==0)
{
i--;
continue;
}
for (int j=0; j<i; j++)
{
if (ergebnis[i]==ergebnis[j] || ergebnis[i]==0)
{
i--;
abbruch=1;
break;
}
}
if (abbruch==1)
{
abbruch=0;
continue;
}
else
{
System.out.println(ergebnis[i]);
}
}
// Lottotipp wird auf Übereinstimmung getestet:
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
if (tipp[i]==ergebnis[j]){
richtig = richtig + 1;
}
}
}
System.out.println(" Sie haben "+richtig+" richtige!");
if(richtig >= 3){
System.out.println("Herzlichen Glückwunsch, Sie hätten gewonnen");
}else{
System.out.println("Mein Beileid, Sie hätten nichts gewonnen");
}
}
public static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static int gettipp(int i)
{
int a = 0;
int b = 0;
double Tipp = 0;
double tipp = 0;
while (a==0)
{
Tipp = 0;
System.out.println("Bitte tippen Sie Ihre "+ (i+1) +". Lottozahl: ");
String number = new String();
try{
number = in.readLine();
}
catch(IOException e)
{
System.out.println("Fehler");
}
try{
tipp = Double.valueOf(number).doubleValue();
Tipp = tipp;
}
catch(Exception e)
{
System.out.println("Fehler! Sie haben keine akzeptable oder eine Komma-Zahl eingegeben");
continue;
}
if (!(1 <= Tipp && Tipp <= 49)) { // ! heißt nicht
System.out.println("Ihre "+ i +". Lottozahl war nicht im Bereich 1-49");
}
else{
a=1;
}
}
return (int)tipp;
}
public static int ziehung()
{
double zufall = 0;
int x = 0;
zufall = Math.random()*49;
zufall = Math.round( zufall );
x = (int)zufall;
return x;
}
}
__________________ bin neu, unwissend und trampel rum |
| | |
| | #32 (permalink) |
| Registriert seit: 10.11.10 ![]() Likes: 0 | hätte man bestimmt auch schöner lösen können (array z.b.) aber es funktiniert und ich hatte keine lust am ende alles nochmal um zu ändern. VB edit: entweder doch i-wo ein fehler oder die lotto-gewinn-wahrscheinlichkeit ist noch niedriger als erwartet... nach ca. 50 Mio. durchläufen keine sechs richtigen... Geändert von DMRMcK (10.11.10 um 15:08 Uhr) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |