否则If语句带有2个变量

时间:2014-09-30 09:42:50

标签: java

我有一个编写简单的 Java 程序的任务:

我有两个整数a和b。如果a>10 and b<10那么它应该打印出来&#34;平衡&#34;如果没有,则打印出来&#34;不平衡&#34;

我知道如何使用1变量进行此操作,但我不知道如何使用2变量。

以下是我尝试的内容:

public static void main(String args[]) {

    int a = 1;
    int b = 15;

    if (a > 10 && b <= 10)
    {
        System.out.println("balanced");
    }
    else
    {
        System.out.println("unbalanced);
    }

}

2 个答案:

答案 0 :(得分:0)

使用&&代替&,使其符合逻辑and而不是按位。{/ p>

如果你在(a > 10) && (b <= 10)附近放置括号,你会发现它更清楚。

答案 1 :(得分:0)

由于存在语法错误,您的代码甚至无法编译。您可以按照以下方式纠正错误。

int a = 1;
int b = 15;
if (a > 10 & b <= 10) { // why <= by reading your question it should <
   System.out.println("balanced");
} else {
   System.out.println("unbalanced");
}

现在输出是unbalanced

现在让我们检查您的代码。你在这里使用&(非短路)。这是不好的,因为总是非短路操作数评估表达式的两侧。

所以你应该使用&&(短路)

int a = 1;
int b = 15;
if (a > 10 && b <= 10) {
   System.out.println("balanced");
} else {
   System.out.println("unbalanced");
}

non short circuit有什么问题?

考虑遵循逻辑。

if(name!=null&name.getFirstName()=="same"){ // Now both side evaluate 

}

name==null会发生什么?name.getFirstName()会给你NullPointerException。如果您使用&&短路,则可以使用此NPE

 if(name!=null&&name.getFirstName()=="same"){ // if first case false not 
                                                              evaluate second 
}