2017-09-18 116 views
0

我有非常簡單的要求。目前在我的程序中,我正在做這樣的事情。任何替代給予if-else語句

int low=getLowValue(); 

if(low==20) 
    low=15; 
else 
    low=(low/5)*5; // here '/' is for integer division 

有沒有簡單的方法可以做到這一點?任何符合上述條件的行語句(不是三元運算符)。 在此先感謝。

+2

你意識到'(low/5)* 5'基本上是'low'。 –

+4

不適用於低= 13它會變成10 – yajiv

+0

低== 20?低= 15:低=(低/ 5)* 5; –

回答

-3

給出的代碼片段寫入以下Java語法來解決所需的問題。

low = (low==20)?15:low; 
2

實際上,三元操作通常是這類事情的理想選擇。

但是,因爲你的國家,你不希望出現這種情況,你也可以做到這一點在「一」 (一)行通過提供自己的功能做繁重:

int GetLowValueWithPreCheck(int checkFrom, int checkTo) { 
    int val = getLowValue(); 
    if (val == checkFrom) return checkTo; 
    return (val/5) * 5; 
} 

int low = getLowValueWithPreCheck(20, 15); 

(a)因爲它引用了一個在調用點的行 - 如果您要在許多地方執行操作並希望將代碼混亂最小化,通常這是一件好事。

+1

Upvote只是爲了'''三元操作對於這類事情'''是理想的。 – sascha

0

你的代碼是可讀的,我不會改變它。但是,如果你真的想,你可以這樣做(在C++中至少):

low = (low - (low == 20))/5 * 5; 

如果low == 20這導致(20 - 1)/5 * 5計算結果爲15。 如果low != 20這會導致low/5 * 5

+0

'low - (low == 20)'不能用嚴格打字的語言工作。 – bfontaine