注意:这是我第一次使用" 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();
}
我在网上看过一些文章,以及&#34; Stack Overflow&#34;发布:Why compile error "Use of unassigned local variable"?。在得知局部变量未初始化(并且必须给出值)之后,我将&#34; isDivisible&#34;设置为bool值。默认情况下等于true。
问题:
有没有更好的方法来定义一个布尔值的局部变量(至少在我试图在这里运行的程序的情况下)?
谢谢!
答案 0 :(得分:3)
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 % 10 == 5) || (sum % 10 == 0)
而不是sum % 5 == 0
。
附注2:您不需要将布尔变量与true
进行比较,您可以将其用作条件。此外,您也不需要else if
。而不是:
if (isDivisible == true)
{
...
}
else if (isDivisible == false)
{
...
}
你可以使用:
if (isDivisible)
{
...
}
else
{
...
}
答案 1 :(得分:2)
C#中的比较表达式将返回一个布尔值,指示它们是否为真。因此,您可以将初始分配简化为:
bool isDivisible = ((sum % 10 == 5) || (sum % 10 == 0));
而不是明确地将其设置为true或false。然后你的变量总是被设置。
这并不适用于所有情况。有时,很难将比较操作简化为简单表达。但是,它通常是初始化bool
的方便方法。