索引数组超出范围

use*_*553 1 c#

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码检查给出的答案是否超过6或低于1,但无论何时我运行它,无论如何它会抛出数组错误,有人帮忙吗?

小智 6

int diceCheck = int.Parse(diceString);
if ((diceCheck >= minDiceValue) || (diceCheck <= maxDiceValue))
{
    diceNo = int.Parse(diceString);
}
Run Code Online (Sandbox Code Playgroud)

这个条件应该是AND而不是OR.此外,由于您在条件之前解析字符串,因此您不需要在其中进行,因此您应该将该部分更改为:

int diceCheck = int.Parse(diceString);
if (diceCheck > maxDiceValue && diceCheck < minDiceValue)
{
   Console.Writeline("Please write a number between 1 and 6");
   break;
}
Run Code Online (Sandbox Code Playgroud)

你的其他if语句也是多余的,因为你已经有了其他dicecheck带有值的variable(),所以删除它.

  • 最好提一下OP解析字符串两次,他只能做一次. (2认同)