Java Machine À Sous
Je vais avoir des problèmes avec un problème pour mon CS de classe. Je suis censé faire une machine à sous et je ne peux pas continuer à travailler, j'obtiens que le scanner méthode nextLine saute au-dessus de la ligne et de la garde ce qui était là, mais il ne me laisse pas entrer n'importe quoi et elle se termine juste en le programme. J'ai aussi de diviser cette méthode et faire 30 lignes ou moins en raison de la mise en forme qui est requis par mon professeur. J'ai aussi de garder un total cumulé pour les gains mais je ne peux pas comprendre comment le faire pour le jackpot.
/**
* ProgrammingAssignment2.java
*
* @author Corey Goff
* @version March 2013
*/
import java.util.Random;
import java.util.Scanner;
/**
* This class simulates a slot machine.
*/
public class SlotMachine
{
/**
* This is the main method.
*
* @param args
*/
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
Random random = new Random();
String cont = "n";
char answer;
int coin = 0;
int totalEntered = 0;
int a;
int b;
int c;
int n;
int amountWon = 0;
int dubs = coin * 2;
int trips = coin * 4;
while (cont.equals("n"))
{
a = random.nextInt(6);
b = random.nextInt(6);
c = random.nextInt(6);
n = random.nextInt(991) +10;
totalEntered += coin;
System.out.println("How much would you like to bet? ");
coin = keyboard.nextInt();
switch (a)
{
case 0:
System.out.println("Cherry");
break;
case 1:
System.out.println("Orange");
break;
case 2:
System.out.println("Plum");
break;
case 3:
System.out.println("Bell");
break;
case 4:
System.out.println("Melon");
break;
default:
System.out.println("Bar");
}
switch (b)
{
case 0:
System.out.println("Cherry");
break;
case 1:
System.out.println("Orange");
break;
case 2:
System.out.println("Plum");
break;
case 3:
System.out.println("Bell");
break;
case 4:
System.out.println("Melon");
break;
default:
System.out.println("Bar");
}
switch (c)
{
case 0:
System.out.println("Cherry");
break;
case 1:
System.out.println("Orange");
break;
case 2:
System.out.println("Plum");
break;
case 3:
System.out.println("Bell");
break;
case 4:
System.out.println("Melon");
break;
default:
System.out.println("Bar");
}
if (a != b && a != c && b != c)
{
System.out.println("You have won $0");
}
else if (a == b || a == c || b == c)
{
System.out.println("Congratulations, you have won $" + dubs);
amountWon += dubs;
}
else if (a == b && a == c && a != 0)
{
System.out.println("Congratulations, you have won $" + trips);
amountWon += trips;
}
else if (a == 0 && b == 0 && c == 0)
{
System.out.println("Congratulations! You have won the jackpot of $"
+ (coin * n));
}
System.out.println("Continue? y/n ");
cont = keyboard.nextLine();
}
}
}
- Pourquoi êtes-vous tout en bas de droit de vote? Atlest laisser OP savoir comment il peut améliorer la question.
Vous devez vous connecter pour publier un commentaire.
Après l'appel de clavier.nextInt(), vous devez appeler le clavier.nextLine() pour vider le caractère de saut de ligne dans le tampon. nextInt() lit jusqu'à ce qu'il trouve quelque chose qui ne peut pas faire partie d'un int et laisse tout ce qui est après l'int assis dans la mémoire tampon.
Voir ce post pour plus d'informations: La lecture des Chaînes de next() et nextLine() de Java
Pour obtenir votre code de travail (avec peu de changements):
Utilisation
keyboard.next();
au lieu dekeyboard.nextLine();
changer votre initiale cont = "n" pour cont = "y" et la boucle while vérifier si (cont.equals("o")).
C'est une solution rapide, il y a beaucoup de changements qui pourraient être apportés pour plus d'efficacité et de suivre les normes, mais je n'entrerai pas dans les détails.
Que pour les moins de 30 lignes exigence, je voudrais commencer en utilisant seulement un générateur aléatoire pour générer tous les 3 fruits dans une structure. Demandez-vous, pourquoi vous devez séparer les générateurs aléatoires pour chaque fruit? Pourquoi un nouveau commutateur par les fruits? Un hasard vs 3 générateurs aléatoires, produira le même caractère aléatoire pour vos fruits.