Estoy creando un juego de Veintiuno y no sé cómo implementar los bucles. Lo que quiero hacer es presentar el juego ("¡Bienvenido a 21!"), pedirle al jugador que tire los dados escribiendo y, y darle los valores de sus tiradas de dados. Luego, quiero retroceder y pedirles que tiren los dados por segunda vez pidiéndoles que escriban y. Si no escriben 'y', quiero que aparezca un mensaje diciéndoles que tienen que escribir y para jugar. Básicamente, se les seguirá preguntando si quieren jugar hasta que presionen y.
Este es mi código hasta ahora. El problema que tengo es que si el usuario presiona 'm' en lugar de 'y', le dirá "ingrese y para jugar", pero si el usuario presiona y después de eso, seguirá diciéndole que tiene que hacerlo. presione y (aunque ya lo hicieron esta segunda vez).
import java.util.Scanner; import java.util.Random; public class TwentyOne { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Welcome to 21!"); System.out.print("Roll the dice, y/n?: "); String roll1 = input.nextLine(); while (true) { if(roll1.equals("Y") || roll1.equals("y")) { int die1 = (int) (Math.random() * 6) + 1; int die2 = (int) (Math.random() * 6) + 1; int sum1 = die1 + die2; System.out.println("Your dice rolled a sum of: " + sum1); break; } else { System.out.println("Please press 'y' to roll the dice and play. "); String rollError = input.nextLine(); } } }Ha asignado la segunda entrada a rollError String rollError = input.nextLine(); y no lo usa para verificar la nueva entrada del usuario if(roll1.equals("Y") || roll1.equals("y")) . Cambiar String rollError = input.nextLine(); para roll1 = input.nextLine();
Este aquí solicitará infinitamente al usuario nuevos rollos (todos activados al presionar "y", observe el equalsIgnoreCase() también) ya que esa es su necesidad descrita. Pero si alguna vez necesitas un juego que termine, no olvides cerrar (input.close()) el objeto Scanner para evitar fugas.
Scanner input = new Scanner(System.in); System.out.println("Welcome to 21!"); boolean isYPressed = false; String roll1 = ""; while (true) { System.out.print("Roll the dice, y/n?: "); roll1 = input.nextLine(); isYPressed = roll1.equalsIgnoreCase("y"); while (!isYPressed) { System.out.println("Please press the Y key"); roll1 = input.nextLine(); isYPressed = roll1.equalsIgnoreCase("y"); } int die1 = (int) (Math.random() * 6) + 1; int die2 = (int) (Math.random() * 6) + 1; int sum1 = die1 + die2; System.out.println("Your dice rolled a sum of: " + sum1); }