2014-09-30 56 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

相關問題