`if`语句无法正常工作

时间:2015-10-19 12:57:27

标签: c# console-application

我正在尝试为我的编程类创建一个控制台应用程序。 if语句无法正常工作。我希望它计算字符串长度,如果它大于10000或小于0,请转到else语句。但它并没有继续if语句。

static void Main(string[] args)
{
    Console.WriteLine("Input a year from 0 to 10000 to determine the next year with distinct numbers");
    string a = Console.ReadLine();

    int MaxLength = 10000;
    int MinLength = 0;

    if (a.Length <= MaxLength && a.Length >= MinLength)
    {
        string b = a.Substring(0, 1);
        string b1 = a.Substring(1, 1);
        string b2 = a.Substring(2, 1);
        string b3 = a.Substring(3, 1);

        Console.WriteLine(b + " " + b1 + " " + b2 + " " + b3);
    }
    else
    {
        Console.WriteLine("Error");
    }
    Console.ReadKey();
}

3 个答案:

答案 0 :(得分:2)

您必须使用int.Parse(a)

if (int.Parse(a) <= MaxLength && int.Parse(a) >= MinLength)
{
    string b = a.Substring(0, 1);
    string b1 = a.Substring(1, 1);
    string b2 = a.Substring(2, 1);
    string b3 = a.Substring(3, 1);

    Console.WriteLine(b + " " + b1 + " " + b2 + " " + b3);
}
else
{
    Console.WriteLine("Error");
}

答案 1 :(得分:1)

您的代码正在检查字符串输入的长度 - 因此,如果用户输入,例如100,则长度将为3。

字符串的长度永远不会小于零,我非常怀疑它的长度是否超过10000。

也许您实际上要做的是将用户的条目转换为数字,同时还能够将用户输入中的Substring方法用作一组字符。

在这种情况下,您需要2个变量

  1. 原始用户输入(字符串,您可以使用Substring) - 原始代码中的a
  2. 输入的数字表示,您可以将其与min&amp;最大数量。下面代码中的val
  3. 另一个考虑因素是用户可能输入一个不可转换为数字的值,所以

    1. 表示用户输入了有效号码的布尔值。下面代码中的isValidEntry
    2. Console.WriteLine("Input a year from 0 to 10000 to determine the next year with distinct numbers");
      string a = Console.ReadLine();
      
      int MaxLength = 10000;
      int MinLength = 0;
      int val = 0;
      bool isValidEntry = int.TryParse(a, out val);
      
      if (isValidEntry && val <= MaxLength && val >= MinLength)
      {
          string b = a.Substring(0, 1);
          string b1 = a.Substring(1, 1);
          string b2 = a.Substring(2, 1);
          string b3 = a.Substring(3, 1);
      
          Console.WriteLine(b + " " + b1 + " " + b2 + " " + b3);
      }
      else
      {
          Console.WriteLine("Error");
      }
      Console.ReadKey();
      

答案 2 :(得分:1)

我相信你在做什么会有些困惑。您的描述说您正在尝试计算输入字符串中的字符数。在这种情况下,您需要一个超过10000个字符的字符串才能使用else语句。

但是,您的程序代码声称您只需要字符串的数值。因此,您应该尝试使用转换方法。

int x = int.Parse(a);

显然你需要对x进行绑定检查,而不是事后检查。