`if` 语句不能正常工作
`if` statement not working correctly
我正在尝试为我的编程制作一个控制台应用程序 class。 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();
}
您的代码正在检查 字符串输入的长度 - 因此如果用户输入,例如 100
长度将为三。
字符串的长度永远不会小于零,而且我非常怀疑它是否会超过 10000。
也许您实际上想做的是将用户输入的内容转换为数字,同时保留使用 Substring
方法从用户输入的一组字符的能力。
在这种情况下,您需要 2 个变量
- 原始用户输入(一个字符串,您可以在其中使用
Substring
)- a
来自您的原始代码
- 输入的 数字 表示,您可以将其与最小和最大数字进行比较。
val
在下面的代码中
另一个考虑因素是用户可能会输入一个无法转换为数字的值,因此
- 一个布尔值,表示用户输入了一个有效数字。
isValidEntry
在下面的代码中
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();
你必须使用 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");
}
我认为您对所做的事情有些困惑。您的描述说您正在尝试计算输入字符串中的字符数。在这种情况下,您将需要一个包含超过 10000 个字符的字符串来执行 else 语句。
但是您的程序代码声称您只需要字符串的数值。因此,您应该尝试使用转换方法。
int x = int.Parse(a);
显然你需要对 x 进行绑定检查而不是事后检查。
我正在尝试为我的编程制作一个控制台应用程序 class。 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();
}
您的代码正在检查 字符串输入的长度 - 因此如果用户输入,例如 100
长度将为三。
字符串的长度永远不会小于零,而且我非常怀疑它是否会超过 10000。
也许您实际上想做的是将用户输入的内容转换为数字,同时保留使用 Substring
方法从用户输入的一组字符的能力。
在这种情况下,您需要 2 个变量
- 原始用户输入(一个字符串,您可以在其中使用
Substring
)-a
来自您的原始代码 - 输入的 数字 表示,您可以将其与最小和最大数字进行比较。
val
在下面的代码中
另一个考虑因素是用户可能会输入一个无法转换为数字的值,因此
- 一个布尔值,表示用户输入了一个有效数字。
isValidEntry
在下面的代码中
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();
你必须使用 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");
}
我认为您对所做的事情有些困惑。您的描述说您正在尝试计算输入字符串中的字符数。在这种情况下,您将需要一个包含超过 10000 个字符的字符串来执行 else 语句。
但是您的程序代码声称您只需要字符串的数值。因此,您应该尝试使用转换方法。
int x = int.Parse(a);
显然你需要对 x 进行绑定检查而不是事后检查。