2014-09-30 55 views
-3

我必须写一个简单的Java 程序任务声明:否则如果有2个变量

我有两个整数a和b。如果a>10 and b<10那么它应该打印出“平衡”,如果没有然后打印出“不平衡”

我知道如何与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); 
    } 

} 
+1

你错过了密切的报价相同,并使用了'<=',而不是'<'。除此之外,它应该工作(即使没有短路操作员)。 – khelwood 2014-09-30 09:51:56

+0

@Mike润这个。 http://ideone.com/DX5t0w。并仔细阅读我的答案。 – 2014-09-30 10:04:49

+0

@RuchiraGayanRanaweera感谢您的帮助。我对编程/编码非常陌生,所以我可能会陷入最简单的事情。但是,当我将学习更多,变得更好 – Mike 2014-09-30 10:17:34

回答

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 
} 
0

使用&&而不是&,以便它的逻辑and不按位一个。

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

+2

'a> 10&b <10'将会得到相同的结果,因为它是非短路和(&) – 2014-09-30 09:47:00

+2

(个人而言,我发现额外的括号不太可读) – 2014-09-30 09:48:28

+2

在Java中'boolean&boolean'不是按位,它只是不会短路。 – chrylis 2014-09-30 09:51:52

相关问题