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.
ich habe folgendes Programm für ein kleines Lottospiel geschrieben:
Java:
public class Lottozahlen {
public static void main (String args[]) {
int min=1;
int max=49;
int[] tipp= new int[6];
Scanner in=new Scanner(System.in);
for(int i=0;i<6;i++){
System.out.println("Bitte die " +(i+1)+".te Zahl eingeben:");
int zwischen=in.nextInt();
for (int j=0;j<6;j++){
if(zwischen<min && zwischen>max){
System.out.println("Bitte eine Zahl zwischen 1 und 49 eingeben:");
i--;
break;
}
if(zwischen==tipp[j]){
System.out.println("Bitte keine doppelten Zahlen eingeben!");
i--;
break;
}
else{
tipp[i]=zwischen;
}
}
}
System.out.println("Die Ziehung lautet: ");
int[] ziehung=new int[6];
Random rand=new Random();
for (int i=0; i<6;i++){
int z=rand.nextInt(49)+1;
if (ziehung[i]!=z){
ziehung[i]=z;
}
else{i--;}
System.out.print(ziehung[i]+" ");
}
System.out.println();
int richtige=0;
for (int i=0;i<6;i++){
for (int j=0;j<6;j++){
if (ziehung[i]==tipp[j]){
richtige++;
break;
}
}
}
System.out.println("Sie haben "+richtige+" richtige!");
}
}
irgendwie will er aber nicht die Zahlen kleiner dem minimal und maximal Wert erkennen. Sprich die folgende Abfrage wird garnicht ausgeführt. Hoffe mir kann da jemand helfen.
Code:
if(zwischen<min && zwischen>max){
System.out.println("Bitte eine Zahl zwischen 1 und 49 eingeben:");
i--;
break;
}
Es gibt keine Zahl die kleiner als 1 UND größer als 49 ist. Da hast du ein Logikproblem. Es müsste ODER heissen. Auch ist mir nicht klar warum du diese Abfrage in einer zweiten inneren for Schleife hast? Die Zahl "zwischen" wird doch während diese Schleife läuft nicht mehr verändert.
Danke das Problem hätte ich gelöst, nur tritt jetzt das Problem auf, dass ich in dieser Schleife nach der 1. Eingabe einer Zahl immer wieder aufgefordert werde keine doppelten Zahlen zu nennen. Er "springt" also immer wieder in die if (zwischen == tipp[j]) rein...
Java:
while(i<6){
System.out.println("Bitte die " +(i+1)+".te Zahl eingeben:");
int zwischen=in.nextInt();
for (int j=0;j<6;j++){
if(zwischen==tipp[j]){
System.out.println("Bitte keine doppelten Zahlen eingeben!");
i--;
break;
}
else{
tipp[i]=zwischen;
}
}
if(zwischen<min || zwischen>max){
System.out.println("Bitte eine Zahl zwischen 1 und 49 eingeben:");
i--;
}
else{
tipp[i]=zwischen;
}
i++ ;
}
Ist mir unverständlich. zwischen==tipp[j] kann nur true sein wenn in tipp an der Stelle j die gleiche zahl steht, wie in "zwischen". Ich nehme an, dass tipp ein int Array ist. Also könnte auch eine Eingabe von 0 als doppelte Zahl gewertet werden, da in einem int Array alle elemente von vorn herein mit 0 initialisiert sind.
Hab hier jetzt eine version die funktioniert danke nochmal an X5-599
Java:
import java.util.*;
public class Lottozahlen {
public static void main (String args[]) {
int min=1;
int max=49;
int[] tipp= new int[6];
Scanner in=new Scanner(System.in);
for(int i=0;i<6;i++){
System.out.println("Bitte die " +(i+1)+".te Zahl eingeben:");
int zwischen=in.nextInt();
if (zwischen>0) {
for (int j=0;j<6;j++){
if(zwischen==tipp[j]){
System.out.println("Bitte keine doppelten Zahlen eingeben!");
i--;
break;
}
}
}
if ((zwischen>=min) && (zwischen<=max)){
tipp[i]=zwischen;
}
else{i--; System.out.println("Bitte eine Zahl zwischen 1 und 49 eingeben:");}
zwischen=0;
}
System.out.println("Die Ziehung lautet: ");
int[] ziehung=new int[6];
Random rand=new Random();
for (int i=0; i<6;i++){
int z=rand.nextInt(49)+1;
if (ziehung[i]!=z){
ziehung[i]=z;
}
else{i--;}
System.out.print(ziehung[i]+" ");
}
System.out.println();
int richtige=0;
for (int i=0;i<6;i++){
for (int j=0;j<6;j++){
if (ziehung[i]==tipp[j]){
richtige++;
break;
}
}
}
System.out.println("Sie haben "+richtige+" richtige!");
}
}
Das Bild kann ich hier auf Arbeit nicht sehen. Du kannst Bilder auch direkt im Forum hochladen. Da du jetzt "zwischen > 0" abfragst und es nun geht, würde ich mal behaupten, dass es daran gelegen hat. Ist aber nur eine Vermutung.