有没有一种方法可以更简洁地编写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法可以更简洁地编写?相关的知识,希望对你有一定的参考价值。
是否可以更简洁地编写以下代码?
if ((count % 100 == 1) || (count % 100 == 21) || (count % 100 == 31)) return "рубль";
else if ((count % 100 == 41) || (count % 100 == 51) || (count % 100 == 61)) return "рубль";
else if ((count % 100 == 71) || (count % 100 == 81) || (count % 100 == 91)) return "рубль";
答案
您正在寻找以1
(count % 10 == 1
)结尾的十进制表示形式的数字,除了那些以11(count % 100 != 11
)结尾的十进制表示形式的数字,因此
if (count % 10 == 1 && count % 100 != 11)
return "рубль";
不同地放置,
if ((count % 100 == 1) || (count % 100 == 21) || (count % 100 == 31)) return "рубль";
else if ((count % 100 == 41) || (count % 100 == 51) || (count % 100 == 61)) return "рубль";
else if ((count % 100 == 71) || (count % 100 == 81) || (count % 100 == 91)) return "рубль";
等效于
if (
count % 100 == 1 ||
// count % 100 == 11 || // Intentionally omitted.
count % 100 == 21 ||
count % 100 == 31 ||
count % 100 == 41 ||
count % 100 == 51 ||
count % 100 == 61 ||
count % 100 == 71 ||
count % 100 == 81 ||
count % 100 == 91
) {
return "рубль";
}
这已经更具可读性,但是我们可以做得更好。
如果我们可以添加count % 100 == 11
,则条件将更加统一,这可能会为简化开辟道路。因此,我们尝试一下。
if (count % 100 != 11) {
if (
count % 100 == 1 ||
count % 100 == 11 ||
count % 100 == 21 ||
count % 100 == 31 ||
count % 100 == 41 ||
count % 100 == 51 ||
count % 100 == 61 ||
count % 100 == 71 ||
count % 100 == 81 ||
count % 100 == 91
) {
return "рубль";
}
}
事实上,我们现在可以如下简化大条件:
if (count % 100 != 11) {
if (count % 10 == 1) {
return "рубль";
}
}
最后,您可以通过对嵌套if
语句的条件进行“与”操作来折叠它们。
if (count % 100 != 11 && count % 10 == 1)
return "рубль";
更具可读性:
if (count % 10 == 1 && count % 100 != 11)
return "рубль";
另一答案
for (int i = 1; i <= 91; i += 10)
if (count % 100 == i)
return "Please use english / Пожалуйста учи английский";
以上是关于有没有一种方法可以更简洁地编写?的主要内容,如果未能解决你的问题,请参考以下文章