Romper la etiqueta en el interruptor
Editado: Gracias a todos por su ayuda. Pude lograr que funcionara utilizando las habilidades que aprendí en los capítulos anteriores y sus consejos. Muchas gracias!
Decidí intentar cimentar las cosas que aprendí de Java: una guía para principiantes creando una simple aventura de texto. Estoy a punto de comenzar el Capítulo 4 que involucra clases y métodos. Los primeros tres capítulos han tratado, if, for, while, do-while, switch, interacción simple con el teclado y break / continue.
Planeo volver después de cada capítulo y editarlo para usar las nuevas habilidades que he aprendido. Apenas arañé la superficie y me encuentro con un problema.
// A basic, but hopefully, lengthy text adventure.
class TextAdventure
{
public static void main(String args[])
throws java.io.IOException
{
System.out.println("\t\t BASIC TEXT ADVENTURE");
// variables I need, attributes, classes, character name, player's choice, gold
int str = 0, inte = 0, chr = 0, con = 0, dex = 0, gold;
char charName, choice;
System.out.println("Welcome player! You are about to embark upon a quest in the form of a text adventure.");
System.out.println("You will make choices, fight monsters, and seek treasure. Come back victorious and you");
System.out.println("could quite possibly buy your way into nobility!");
System.out.println();
caseChoice: {
System.out.println("Please select your class:");
System.out.println("1. Warrior");
System.out.println("2. Mage");
System.out.println("3. Rogue");
System.out.println("4. Archer");
choice = (char) System.in.read(); // Get players choice of class
switch(choice)
{
case '1':
System.out.println("You have chosen the Warrior class!");
System.out.println("You're stats are as followed:");
System.out.println("Str: 16");
System.out.println("Int: 11");
System.out.println("Chr: 14");
System.out.println("Con: 15");
System.out.println("Dex: 9");
str = 16;
inte = 11;
chr = 14;
con = 15;
dex = 9;
break;
case '2':
System.out.println("You have chosen the Mage class!");
System.out.println("You're stats are as followed:");
System.out.println("Str: 16");
System.out.println("Int: 11");
System.out.println("Chr: 14");
System.out.println("Con: 15");
System.out.println("Dex: 9");
str = 9;
inte = 16;
chr = 14;
con = 15;
dex = 11;
break;
case '3':
System.out.println("You have chosen the Rogue class!");
System.out.println("You're stats are as followed:");
System.out.println("Str: 16");
System.out.println("Int: 11");
System.out.println("Chr: 14");
System.out.println("Con: 15");
System.out.println("Dex: 9");
str = 15;
inte = 11;
chr = 14;
con = 9;
dex = 16;
break;
case '4':
System.out.println("You have chosen the Archer class!");
System.out.println("You're stats are as followed:");
System.out.println("Str: 16");
System.out.println("Int: 11");
System.out.println("Chr: 14");
System.out.println("Con: 15");
System.out.println("Dex: 9");
str = 9;
inte = 11;
chr = 14;
con = 15;
dex = 16;
break;
default:
System.out.println("Not a valid choice, please enter a digit 1-4");
break caseChoice;
}
}
}
}
La intención de la declaración predeterminada en el conmutador es devolver el flujo de código a la elección de clase. NO recibo un error de compilación o error de tiempo de ejecución. Cuando selecciona cualquier cosa además de 1, 2, 3 o 4. Dice "No es una opción válida, ingrese un dígito 1-4" como se supone, pero el programa termina.
¿No se me permite usar una etiqueta como esa en un interruptor? ¿O no funciona porque está técnicamente fuera del bloque de código?