基本的纸牌游戏,在while循环中有一个switch语句 . case是用户输入选择的卡号,然后更换 . 那部分工作正常 . 但测试默认语句(任何数字不是0-5),它进入默认的console.writeline的无限循环,我不知道为什么它没有破坏 . 在以前的开关嵌套在while循环中它对我有效,但我从来没有在以前的默认值之前有这个无限循环问题 . 任何帮助/提示?
int userInput;
string userString;
Console.WriteLine("Would you like to replace a card?");
Console.WriteLine("Select which card you would like to replace, 1-5. Enter 0 to skip");
userString = Console.ReadLine();
int.TryParse(userString, out userInput);
while (userInput != 0)
{
switch (userInput)
{
case 1:
userInput--;
userHand[userInput] = cardDeck.GetOneCard();
break;
case 2:
userInput--;
userHand[userInput] = cardDeck.GetOneCard();
break;
case 3:
userInput--;
userHand[userInput] = cardDeck.GetOneCard();
break;
case 4:
userInput--;
userHand[userInput] = cardDeck.GetOneCard();
break;
case 5:
userInput--;
userHand[userInput] = cardDeck.GetOneCard();
break;
default:
Console.WriteLine("Incorrect input, try again");
break;
}
}
2 回答
Problem: 您没有在
while loop
中读取用户输入 .如果你没有在
while
循环中读取user input
它仅适用于one iteration
并且如果选择的数字在1-5
之间则没有问题但是如果选择的数字是除了1-5
之外的其他东西它会转到default case
并且因为你没有阅读userinput
它仍然存在同样如此,它将进入infinite loop
.Solution :
将以下语句放在while循环中以读取
userInput
Complete Solution:
这是因为
default
情况不会更改userInput
的值,因此userInput
始终不是0
且循环是无限的 . 您可以通过提示用户输入新号码来修复它:如果您只想修改
default
案例,请执行此操作 . 否则,要在每个循环中提示用户输入新号码,请使用Sudhakar的解决方案 .