我有一个问题,可以简化为:
parameters: a, b
if (a > 5)
{
Print("Very well, a > 5");
if (b > 7)
Print("Even better, b > 7");
else
{
Print("I don't like your variables");
}
}
else
{
Print("I don't like your variables");
}
我只想使用一个else
而不是两个,因为它们是相同的代码。我想到的是创建一个额外的方法,它将返回组合的true``false
,但这是一个严重的夸大其词。
另一种选择是goto
,但这会降低代码的可读性和安全性。
如何做到这一点,避免多次检查相同的条件,并使其尽可能地可读性?
发布于 2014-03-25 07:53:16
布尔逻辑101:
public void test(int a, int b, int c) {
boolean good = true;
if (good = good && a > 5) {
System.out.println("Very well, a > 5");
}
if (good = good && b > 7) {
System.out.println("Even better, b > 7");
}
if (good = good && c > 13) {
System.out.println("Even better, c > 13");
}
// Have as many conditions as you need, and then
if (!good) {
System.out.println("I don't like your variables");
}
}
或者-如果你想要一大堆支票-
enum Tests {
A_gt_5 {
@Override
boolean test(int a, int b, int c) {
return a > 5;
}
},
B_gt_7 {
@Override
boolean test(int a, int b, int c) {
return b > 7;
}
},
C_gt_13 {
@Override
boolean test(int a, int b, int c) {
return c > 13;
}
};
abstract boolean test (int a, int b, int c);
}
public void test(int a, int b, int c) {
boolean good = true;
for ( Tests t : Tests.values() ) {
good = good && t.test(a, b, c);
if (!good) {
break;
}
}
if (!good) {
System.out.println("I don't like your variables");
}
}
发布于 2014-03-25 07:08:19
void doILikeYourVariables(int a, int b) {
if (a > 5) {
Print("Very well, a > 5");
if (b > 7) {
Print("Even better, b > 7");
return;
}
}
Print("I don't like your variables");
}
发布于 2014-03-25 07:34:37
if (a > 5)
{
Print("Very well, a > 5");
}
if(a > 5 && b >7)
{
Print("Even better, b > 7");
}
else
{
Print("I don't like your variables");
}
或
bool isEvenBetter = false;
if (a > 5)
{
Print("Very well, a > 5");
isEvenBetter = b > 7;
}
if(isEvenBetter)
{
Print("Even better, b > 7");
}
else
{
Print("I don't like your variables");
}
https://stackoverflow.com/questions/22622332
复制相似问题