1

我在创建一个循环来检查变量 10 和 50 之间是否有 5 个变量时遇到问题。我相信我已经设置了正确的编码,但是我收到一个错误,说我无法将 int 转换为 bool。这是我目前拥有的:

        string userName = "";
        int v1, v2, v3, v4, v5 = 0;
        float avg;
        float variance;

        Console.WriteLine("What is your name?");
        userName = Console.ReadLine();

        Console.WriteLine();

        int i = 1;

        while (i <= 5)
        {
            int InputCheck = 0;
            Console.WriteLine("Please input a number {0} between 10 and 50;", i);
            InputCheck = Convert.ToInt32(Console.ReadLine());

            if (InputCheck >= 10 && InputCheck <= 50) 
            {

                if (i >= 10 && i <= 50)
                    i++;
                if (i != 1)
                {
                    InputCheck = v1;
                }
                if (i != 2)
                {
                    InputCheck = v2;
                }

                if (i == 3)
                {
                    InputCheck = v3;
                }
                if (i == 4)
                {
                    InputCheck = v4;
                }
                if (i == 5)
                {
                    InputCheck = v5;
                }
                if (InputCheck < 10 || InputCheck > 50)
                {
                    Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
                }
            }

任何帮助将不胜感激。

4

1 回答 1

1

我不是 100% 确定,但我认为你的错误来自这一行:

Console.WriteLine("Please input a number {0} between 10 and 50;", i);

您正在给出一个int 'i',它需要一个布尔值。也许这会有所帮助: http: //msdn.microsoft.com/en-us/library/70x4wcx1.aspx ?cs-save-lang=1&cs-lang=vb#code-snippet-2

至于您的其余代码:

  • Calamar888 是正确的,您用于 'i' 的第一个 if 语句永远不会评估为 true。
  • 此外,后面的 if(if(i !=1) 等)将多次评估为 true,覆盖您已经保存的值(当 i = 2、3、4 或 5 时,i != 1)。
  • 在这些 if 语句中,您正在更改“InputCheck”的值,而不是保存它
  • 您应该考虑使用数组来缩短程序
  • 你的 else "if (InputCheck < 10 || InputCheck > 50)" 不应该在第一个 if 里面,它永远不会是真的

假设您声明:

int v[5]; /* creates array v[0], v[1], ... v[4] */
int i = 0;

while (i<=4){
 /* internal code */
}

像这样的东西应该工作:

/* internal code */

    if (InputCheck >= 10 && InputCheck <= 50) 
        {
           v[i] = InputCheck;   
           i++;

        }
    else if (InputCheck < 10 || InputCheck > 50)
        {
           Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
        }
于 2013-02-18T19:51:32.933 回答