if (testModetrue)
{
try
{
Console.Write("What number do you want the roll to be set to? (1-6)");
string diceString = Console.ReadLine();
int diceCheck = int.Parse(diceString);
if ((diceCheck >= minDiceValue) || (diceCheck <= maxDiceValue))
{
diceNo = int.Parse(diceString);
}
else if ((diceCheck <= minDiceValue) || (diceCheck >= maxDiceValue))
{
Console.WriteLine("Please enter a number between 1-6.");
break;
}
}
catch (Exception)
{
Console.WriteLine("An error has occured.");
return;
}
}
此代码检查给出的答案是否超过6或低于1,但是无论何时运行它,无论如何它会抛出数组错误,有人帮忙吗?
答案 0 :(得分:6)
int diceCheck = int.Parse(diceString);
if ((diceCheck >= minDiceValue) || (diceCheck <= maxDiceValue))
{
diceNo = int.Parse(diceString);
}
此条件应为AND而不是OR。此外,由于您在条件之前解析字符串,因此您不需要在其中进行,因此您应该将该部分更改为:
int diceCheck = int.Parse(diceString);
if (diceCheck > maxDiceValue && diceCheck < minDiceValue)
{
Console.Writeline("Please write a number between 1 and 6");
break;
}
你的其他if语句也是多余的,因为你已经有了其他变量(dicecheck
),所以删除它。
答案 1 :(得分:1)
private const int maxDiceValue = 6;
private const int minDiceValue = 1;
Console.Write("What number do you want the roll to be set to? (1-6)");
string diceString = Console.ReadLine();
int diceCheck;
if (!int.TryParse(diceString, out diceCheck) ||
diceCheck < minDiceValue ||
diceCheck > maxDiceValue) {
Console.WriteLine("Please enter a number between 1-6.");
return;
}
// add diceCheck to array here
答案 2 :(得分:0)
让我们想象用户介绍-1。
在第一个条件中,您要验证-1&gt; = 1是否为假,但您也在验证-1&lt; = 6是否为真。
而不是&amp;&amp; (还有)你正在使用|| (要不然)。
由于其中一个条件始终为true,因此验证将始终返回true,因此代码将运行抛出错误。