我正在创建一个骰子程序以进一步学习。该程序将掷出5个骰子,并将随机数值分配给5个数组,然后打印出这些值。之后,我希望玩家选择他或她想要保留的骰子或骰子,显示这些值,然后我将创建一种掷出剩余骰子的方法。
我在选择多个骰子部分时遇到问题。
这是我到目前为止所拥有的:
using System;
class HelloWorld {
static void Main() {
Random random = new Random();
int[] diceEach = new int[5];
int diceCount = 1;
for(int i = 0; i < 5; i++)
{
diceEach[i] = random.Next(1, 7);
Console.WriteLine("Dice " + diceCount +": " + diceEach[i]);
diceCount++;
}
Console.WriteLine("To roll again hit R");
Console.WriteLine("Please type the dice numbers that you would like to keep...");
string diceKept = Console.ReadLine();
if(diceKept == "1")
{
Console.Write(diceEach[0]);
}
else if(diceKept == "1")
{
Console.WriteLine(diceEach[1]);
}
else if(diceKept == "3")
{
Console.WriteLine(diceEach[2]);
}
else if(diceKept == "4")
{
Console.WriteLine(diceEach[3]);
}
else if(diceKept == "5")
{
Console.WriteLine(diceEach[4]);
}
else if(diceKept == "r")
{
Console.WriteLine("You have chosen to roll again");
}
Console.ReadLine();
}
}
我目前有它打印出您选择的一个骰子值,但是我不确定如何打印出多个选择。我能想到的唯一方法是输入所有选项。但这似乎不对,会使我的代码很长。
我以为某种循环可能有用?但我知道如何。
这是我第一次在这里发布信息,希望我做对了。预先感谢!
例如,您可以通过让他输入自己选择的骰子(用逗号','隔开)来获得多个用户选择,>
1,2,5
然后展开代码
string diceKept = Console.ReadLine(); try{ int[] selectedDices = diceKept.Split(',').Select(x => int.Parse(x)).ToArray(); }catch{ //invalid input - string value could not be parsed to int value. }
您可以在函数中使用try-catch块,然后如果未抛出错误,则继续您的工作,否则重试所选值的输入。
您可以解决的另一种方法是循环播放,直到用户完成选择要保留的骰子,并想要使用do ... while