【发布时间】:2017-12-13 22:54:47
【问题描述】:
在一些帮助下,我设法得到了这些问题的正确答案,但我想了解这些概念(即理解为什么这些代码是正确的),因为理解非常重要并且不仅仅是语法记忆。
第一个问题是给你3场比赛的结果(真=赢),第一个奖金是1,第二个是2,第三个是3。返回总奖金(你可以赢任何奖品组合)
答案是:
public static int GetTotalPrize(bool first, bool second, bool third)
{
var result = 0;
if (first)
{ result += 1; }
if (second)
{ result += 2; }
if (third)
{ result += 3; }
return result;
}
程序如何知道如果您要赢得一等奖、二等奖和三等奖,那么总数是 6?或者如果你要赢得第一和第三,总数是4?换句话说,上面的代码如何解释所有可能的组合?
第二个问题是您获得了 3 场比赛的结果,其中一场比赛是您获胜的(真 = 获胜)。第一名的奖金是1,第二名是2,第三名是3。返还奖金。
我的回答是:
public static int GetPrize(bool first, bool second, bool third)
{
if (first)
return 1;
if (second)
return 2;
if (third)
return 3;
return 0;
}
没有“return 0;”最后的部分,我的代码显示为不正确。为什么?正如问题所说,我赢得了其中一个奖项,换句话说,我不会空手而归。
提前致谢
【问题讨论】:
-
我建议您阅读
+=运算符的作用。这将是您问题的答案 -
“如果没有最后的“return 0;”部分,我的代码会显示为不正确。为什么?”因为所有布尔值都可能是假的,那么你会不返回任何东西。所以你必须添加
return 0。编译器试图提供帮助,他做到了 -
我知道它的作用,但你没有正确阅读我的问题@Sergey
-
谢谢蒂姆,这很有道理
-
@S.Dan:顺便说一句,如果没有
bool是true,您也可以抛出异常,而不是返回0。如果这是一个例外情况,那可能是更好的选择,因此永远不应该发生并表明存在错误。所以你可以用throw new ArgumentException("One of the bools must be true")替换return 0;
标签: c# if-statement boolean