Я пытаюсь сделать текстовую игру на Java. и у меня будет много заявлений о переключении со сканером, но я не уверен, какой путь будет лучшим.
Какой лучший способ сделать заявление о переключении со сканером?
лучше попробовать + поймать? или сделать петлю?
и если у меня есть, скажем, 10 switch-Statement. Лучше ли иметь 10 разных сканеров, объявленных для каждого оператора switch?
Мне нравится иметь в своем составе команду try + catch в стиле switch-Statement с отдельным сканером, но кто-то сказал, что в этом нет необходимости, и таким образом слишком много тратит память. Я предпочитаю вспоминать метод, когда вводился неправильный тип ввода, и я думаю, что try + catch был лучше в этом смысле, потому что когда он вызывался, он также вызывал Scanner и Random, что давало нам возможность сбросить ввод, введенный пользователем. а также случайно сгенерированное число по Random.
Эти коды здесь являются примерами.
и код здесь не хороший код?
(только когда дело доходит до try + catch, использование сканера)
public static void levelUpAsk_111(Character chosenMember) {
try {
Random rand = new Random();
Scanner sc = new Scanner(System.in);
int dicePercent = rand.nextInt(6) + 1;
int num = sc.nextInt();
if (num == dicePercent ) {
System.out.println("** Congratulation!!");
sc.nextLine();
System.out.println("**Which one would you like to increase?");
System.out.println("1. +20 HP");
System.out.println("2. +10 MP");
System.out.println("3. +5 ATT");
levelUpAsk_222(chosenMember); //the second method
} else if (num > 7 || num < 1) {
System.out.println("Please from 1 to 6");
levelUpAsk_111(chosenMember); //recall itself
} else {
System.out.println("** Sorry..");
sc.nextLine();
}
} catch (InputMismatchException e) {
System.out.println("Please integer only");
levelUpAsk_111(chosenMember); //recall itself
}
}
public static void levelUpAsk_222(Character chosenMember) {
try {
Scanner sc = new Scanner(System.in);
int select = sc.nextInt();
switch (select) {
case 1:
System.out.println("** HP has increased by 20.");
break;
case 2:
System.out.println("** MP has increased by 10.");
break;
case 3:
System.out.println("** ATT has incrased by 5.");
break;
default:
System.out.println("From 1 to 3");
levelUpAsk_222(chosenMember); //recall itself
break;
}
} catch (InputMismatchException e) {
System.out.println("Only integer please"); //recall itself
levelUpAsk_222(chosenMember);
}
}