![](/img/trans.png)
[英]How to set a do…while loop on a switch statement and add inputs?
[英]how to set a switch statement in while loop in java
我想在while循環中進行切換,在每個switch語句中斷while循環停止並請求輸入,如F,R,C,Q。下面的語句有效,但語句不會中斷。 請幫忙
public static void main(String[] args) throws IOException {
// start both with 1 point
int goodTotal = 50;
int monTotal = 50;
// input switch statement
while (goodTotal > 0 && monTotal > 0) {
System.out.print("Type a letter: ");
System.out.println("\n");
System.out.print("F: Go out and Fight ");
System.out.println("\n");
System.out.print("R: Rest ");
System.out.println("\n");
System.out.print("C: Check Stats ");
System.out.println("\n");
System.out.print("Q: Quit ");
int input = System.in.read();
System.out.println("You typed: " + (char) input);
switch (input) {
case 'f':
System.out.println("Continue the game");
break;
case 'r':
System.out.println("Players should rest");
break;
case 'c':
System.out.println("Checking the status of the game");
System.out.print("Goodman has " + goodTotal + " points and Monster has " + monTotal + " points");
System.out.println("\n");
break;
case 'q':
System.out.println("Game over");
System.exit(input);
break;
default:
System.out.println("Invalid selection");
break;
}
// Set value of minimum and maximum damage
int minDmg = 2;
int maxDmg = 15;
// Get random number;
int damage = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue();
int damage2 = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue();
// remove value of damage from started value to get total value remaining
goodTotal = goodTotal - damage;
monTotal = monTotal - damage2;
// print message if still in the game
if (goodTotal > 0) {
System.out.println("Goodman has " + goodTotal + " points left. Not bad, Man! ");
}
// if Goodman survives round 2 print a message of encouragement
if (goodTotal > 0 && count > 1 && count <= 2) {
System.out.print("This is encouraging. Goodman has lasted past roundhh " + count + ". ");
// print new message if Goodman passes round 3
} else if (goodTotal > 0 && count == 3) {
System.out.print("Goodman is as strong as Samson. He has lasted round " + count
+ " and still looks strong.");
System.out.print(" 10 hit points has been added to your total");
}
if (monTotal > 0) {
System.out.println("Wait, Monster has a total of " + monTotal + " points and is still in the game");
}
// exit if have less than 0 point, and print game over. Congratulate the winner
if (goodTotal < 0) {
System.out.println("Goodman you are out of the game");
System.out.println("The monster will take over the village. This is sad");
System.out.println("Game Over!");
} else if (monTotal < 0) {
System.out.println("Goodman has been victorious");
System.out.println("The monster is dead. The people live!!!!");
System.out.println("Game Over!");
}
System.out.println("This is the end of round " + count + " ");
System.out.println("\n");
count = count + 1;
}
}
在循環上使用標簽:
loop: while (goodTotal > 0 && monTotal > 0) {
// ...
switch (input) {
case 'f':
// ...
break loop;
case 'r':
// ...
break loop;
// ...
}
// ...
}
你應該使用帶標簽的break
。
盡管以不需要它們的方式重寫代碼可能更好,因為它們不是很容易閱讀。
input
的類型為int ,但case標簽是字符文字 (即f,r,c,q
)。 你為什么不把input
也變成char
類?
char input = System.in.read();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.