2014-04-01 19 views
0

我想寫一個程序,它會發現如果有一個給定的數量相等的機率,甚至數字,它的工作很好,但它想使用條件運算符而不是這些4行(該行//),有條件的運算符爲奇數或偶數

我得到這個:

令牌 「%」 語法錯誤,無效AssignmentOperator

有人能告訴我爲什麼嗎?怎麼了?

while(number!=0) { 
    //if(number%2==0) 
    //even++; 
    //else 
    //odd++; 
    number%2==0 ? even++ : odd++; 
    number/=10; 
} 
+1

您需要將三元運算符的結果分配給某物:'int dummy = number%2 == 0?甚至++:odd ++;'。說實話,你的初始代碼看起來很好。 – assylias

+0

如果(......)...有什麼問題,其他...;'?你也可以把它寫成一行。 – Holger

回答

5
number%2==0 ? even++ : odd++; 

這不是一個聲明。三元組的結果必須分配給某些東西:

int x = number % 2 == 0 ? even++ : odd++; 

但是,這在風格上相當尷尬。我會在這個模式中使用if-else(也就是你原來的樣子)。在這裏,您創建了一個永遠不會重用的臨時變量,僅用於使用三元組。

1

它需要一個變量在你可以放置條件後的值的左側。

int tmp = (number%2 == 0)?even++:odd++; 
0
number%2==0 ? even++ : odd++; 

這種說法是不分配按我的知識的任何值number.As它總是推薦的,而不是三元操作者使用if-else

因爲在三元運算符中false/else部分是強制寫入的,其中if-else else/false部分是可選的。

while(number!=0) { 
     //if(number%2==0) 
     //even++; 
     //else 
     //odd++; 
     int temp= number%2==0 ? even++ : odd++; 
     number/=10; 

    } 

現在,temp變量保持該值。