定义布尔局部变量
Defining boolean local variables
注意:这是我第一次使用 "Stack Overflow",我对 C# 比较陌生
(请原谅我目前编程水平不高)
我的代码:
static void Main(string[] args)
{
Challenge(5, 12);
}
static void Challenge(int num1, int num2)
{
//finds the sum of the two variables
int sum = num1 + num2;
Console.WriteLine("The sum of {0} and {1} is...\n{2}", num1, num2, sum);
bool isDivisible = true;
//checks if divisible by 5 and sets a value for 'isDivisible'
if ((sum % 10 == 5) || (sum % 10 == 0))
{
Console.WriteLine("\nThe sum is divisible by 5!");
isDivisible = true;
}
else if ((sum % 10 != 5) || (sum % 10 != 0))
{
Console.WriteLine("\nThe sum is not divisible by 5!");
isDivisible = false;
}
//depending on value of 'isDivisible', returns certain functions
if (isDivisible == true)
{
Console.WriteLine("This value is usable.");
Console.WriteLine("\n\nThe remaining usable values are: ");
for (int newVal = sum + 1; newVal <= 55; newVal++) // '+ 1' added to make sure 'sum' is not printed again
{
if ((newVal % 10 == 5) || (newVal % 10 == 0))
{
Console.WriteLine(newVal);
}
}
}
else if (isDivisible == false)
{
Console.WriteLine("This value is not usable.");
Console.WriteLine("\n\nThese values are considered usable: ");
for (int newVal = 0; newVal <= 55; newVal++)
{
if ((newVal % 10 == 5) || (newVal % 10 == 0))
{
Console.WriteLine(newVal);
}
}
}
Console.ReadLine();
}
我在网上看了一些文章,还有 "Stack Overflow" post: Why compile error "Use of unassigned local variable"? 。在了解到局部变量没有被初始化(并且必须被赋予一个值)之后,我将 "isDivisible" 的 bool 值默认设置为 true 。
问题:
有没有更好的方法来定义一个布尔值的局部变量(至少在我在这里尝试 运行 的程序的情况下)?
谢谢!
C# 中的比较表达式将 return 一个布尔值,指示它们是否为真。因此,您可以将初始分配简化为:
bool isDivisible = ((sum % 10 == 5) || (sum % 10 == 0));
而不是明确地将其设置为 true 或 false。那么你的变量将总是被设置。
这并不适用于所有情况。有时,很难将比较操作简化为一个简单的表达式。但是,它通常是初始化 bool
s.
的便捷方式
你在else if
中的条件是错误的,它不是第一个条件的补码,所以没有意义。正确的补充是:
else if ((sum % 10 != 5) && (sum % 10 != 0))
但是,您根本不需要使用 else if
,您可以只使用 else
,因为您想要捕获所有未被第一个条件捕获的情况。这也意味着您不必初始化布尔变量,因为编译器可以看到它总是由代码块之一设置:
bool isDivisible;
//checks if divisible by 5 and sets a value for 'isDivisible'
if ((sum % 10 == 5) || (sum % 10 == 0))
{
Console.WriteLine("\nThe sum is divisible by 5!");
isDivisible = true;
}
else
{
Console.WriteLine("\nThe sum is not divisible by 5!");
isDivisible = false;
}
旁注:您可以使用 sum % 5 == 0
.
而不是 (sum % 10 == 5) || (sum % 10 == 0)
旁注 2:您不需要将布尔变量与 true
进行比较,您可以将其用作条件。此外,您也不需要 else if
。而不是这个:
if (isDivisible == true)
{
...
}
else if (isDivisible == false)
{
...
}
您可以使用:
if (isDivisible)
{
...
}
else
{
...
}
注意:这是我第一次使用 "Stack Overflow",我对 C# 比较陌生
(请原谅我目前编程水平不高)
我的代码:
static void Main(string[] args)
{
Challenge(5, 12);
}
static void Challenge(int num1, int num2)
{
//finds the sum of the two variables
int sum = num1 + num2;
Console.WriteLine("The sum of {0} and {1} is...\n{2}", num1, num2, sum);
bool isDivisible = true;
//checks if divisible by 5 and sets a value for 'isDivisible'
if ((sum % 10 == 5) || (sum % 10 == 0))
{
Console.WriteLine("\nThe sum is divisible by 5!");
isDivisible = true;
}
else if ((sum % 10 != 5) || (sum % 10 != 0))
{
Console.WriteLine("\nThe sum is not divisible by 5!");
isDivisible = false;
}
//depending on value of 'isDivisible', returns certain functions
if (isDivisible == true)
{
Console.WriteLine("This value is usable.");
Console.WriteLine("\n\nThe remaining usable values are: ");
for (int newVal = sum + 1; newVal <= 55; newVal++) // '+ 1' added to make sure 'sum' is not printed again
{
if ((newVal % 10 == 5) || (newVal % 10 == 0))
{
Console.WriteLine(newVal);
}
}
}
else if (isDivisible == false)
{
Console.WriteLine("This value is not usable.");
Console.WriteLine("\n\nThese values are considered usable: ");
for (int newVal = 0; newVal <= 55; newVal++)
{
if ((newVal % 10 == 5) || (newVal % 10 == 0))
{
Console.WriteLine(newVal);
}
}
}
Console.ReadLine();
}
我在网上看了一些文章,还有 "Stack Overflow" post: Why compile error "Use of unassigned local variable"? 。在了解到局部变量没有被初始化(并且必须被赋予一个值)之后,我将 "isDivisible" 的 bool 值默认设置为 true 。
问题:
有没有更好的方法来定义一个布尔值的局部变量(至少在我在这里尝试 运行 的程序的情况下)?
谢谢!
C# 中的比较表达式将 return 一个布尔值,指示它们是否为真。因此,您可以将初始分配简化为:
bool isDivisible = ((sum % 10 == 5) || (sum % 10 == 0));
而不是明确地将其设置为 true 或 false。那么你的变量将总是被设置。
这并不适用于所有情况。有时,很难将比较操作简化为一个简单的表达式。但是,它通常是初始化 bool
s.
你在else if
中的条件是错误的,它不是第一个条件的补码,所以没有意义。正确的补充是:
else if ((sum % 10 != 5) && (sum % 10 != 0))
但是,您根本不需要使用 else if
,您可以只使用 else
,因为您想要捕获所有未被第一个条件捕获的情况。这也意味着您不必初始化布尔变量,因为编译器可以看到它总是由代码块之一设置:
bool isDivisible;
//checks if divisible by 5 and sets a value for 'isDivisible'
if ((sum % 10 == 5) || (sum % 10 == 0))
{
Console.WriteLine("\nThe sum is divisible by 5!");
isDivisible = true;
}
else
{
Console.WriteLine("\nThe sum is not divisible by 5!");
isDivisible = false;
}
旁注:您可以使用 sum % 5 == 0
.
(sum % 10 == 5) || (sum % 10 == 0)
旁注 2:您不需要将布尔变量与 true
进行比较,您可以将其用作条件。此外,您也不需要 else if
。而不是这个:
if (isDivisible == true)
{
...
}
else if (isDivisible == false)
{
...
}
您可以使用:
if (isDivisible)
{
...
}
else
{
...
}