我有非常簡單的要求。目前在我的程序中,我正在做這樣的事情。任何替代給予if-else語句
int low=getLowValue();
if(low==20)
low=15;
else
low=(low/5)*5; // here '/' is for integer division
有沒有簡單的方法可以做到這一點?任何符合上述條件的行語句(不是三元運算符)。 在此先感謝。
我有非常簡單的要求。目前在我的程序中,我正在做這樣的事情。任何替代給予if-else語句
int low=getLowValue();
if(low==20)
low=15;
else
low=(low/5)*5; // here '/' is for integer division
有沒有簡單的方法可以做到這一點?任何符合上述條件的行語句(不是三元運算符)。 在此先感謝。
給出的代碼片段寫入以下Java語法來解決所需的問題。
low = (low==20)?15:low;
實際上,三元操作通常是這類事情的理想選擇。
但是,因爲你的國家,你不希望出現這種情況,你也可以做到這一點在「一」 (一)行通過提供自己的功能做繁重:
int GetLowValueWithPreCheck(int checkFrom, int checkTo) {
int val = getLowValue();
if (val == checkFrom) return checkTo;
return (val/5) * 5;
}
int low = getLowValueWithPreCheck(20, 15);
(a)因爲它引用了一個在調用點的行 - 如果您要在許多地方執行操作並希望將代碼混亂最小化,通常這是一件好事。
Upvote只是爲了'''三元操作對於這類事情'''是理想的。 – sascha
你的代碼是可讀的,我不會改變它。但是,如果你真的想,你可以這樣做(在C++中至少):
low = (low - (low == 20))/5 * 5;
如果low == 20
這導致(20 - 1)/5 * 5
計算結果爲15
。 如果low != 20
這會導致low/5 * 5
。
'low - (low == 20)'不能用嚴格打字的語言工作。 – bfontaine
你意識到'(low/5)* 5'基本上是'low'。 –
不適用於低= 13它會變成10 – yajiv
低== 20?低= 15:低=(低/ 5)* 5; –