引言
訓練JS#7:
if..else和三元運算符
在Javascript中,if..else是最基本的條件語句,它由三部分組成:condition, statement1, statement2像這樣:
if (condition) statementa
else statementb
這意味著如果條件為真,則執(zhí)行statementa,否則執(zhí)行statementb。如果statementa或statementb多行,則需要在JS的頭尾添加{并}保持相同的縮進Python并將它放在endRuby確實結束的地方。
例如,如果我們想判斷數(shù)字是奇數(shù)還是偶數(shù),我們可以編寫如下代碼:
public static string OddEven(final int n){
if (n%2==1) return "odd number";
else return "even number";
}
如果要判斷多個條件,我們可以使用復合if ... else語句。一個例子:
public static string OldYoung(final int age){
if (age<16) return "children";
else if (age<50) return "young man"; //use "else if" if needed
else return "old man";
}
此函數(shù)根據(jù)參數(shù)年齡返回不同的值。
看起來很復雜?好吧,JS和Ruby也支持ternary operator,Python也有類似的東西:
condition ? statementa : statementb
條件和語句用“?”分隔,在Ruby和JS中用“:”分隔的不同語句; 在Python中,您將條件置于兩個備選方案的中間。上面的兩個例子可以用三元運算符簡化:
public static string OddEven(final int n){
return n%2==1 ? "odd number" : "even number";
}
public static string OldYoung(final int age){
return age<16 ? "children" : age<50 ? "young man" : "old man";
}
任務:
功能齊全saleHotdogs/ SaleHotDogs,功能接受1個參數(shù):n,n是購買熱狗的客戶數(shù)量,不同的數(shù)量有不同的價格(參考下表),返回一個數(shù)字表示客戶需要支付多少錢。
+---------------+-------------+
| numbers n | price(cents)|
+---------------+-------------+
|n<5 | 100 |
+---------------+-------------+
|n>=5 and n<10 | 95 |
+---------------+-------------+
|n>=10 | 90 |
+---------------+-------------+
您可以使用if..else或三元運算符來完成它。
When you have finished the work, click "Run Tests" to see if your code is working properly.
In the end, click "Submit" to submit your code pass this kata.
測試用例:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class SaleHotdogsTest {
@Test
public void BasicTests() {
assertEquals(100,SaleHotdogs.saleHotdogs(1));
assertEquals(400,SaleHotdogs.saleHotdogs(4));
assertEquals(475,SaleHotdogs.saleHotdogs(5));
assertEquals(855,SaleHotdogs.saleHotdogs(9));
assertEquals(900,SaleHotdogs.saleHotdogs(10));
assertEquals(9000,SaleHotdogs.saleHotdogs(100));
}
}
解題
My
public class SaleHotdogs{
public static int saleHotdogs(final int n){
if (n >= 10) {
return 90*n;
} else if (n >= 5 && n < 10) {
return 95*n;
} else { // n<5
return 100*n;
}
}
}
Other
public class SaleHotdogs{
public static int saleHotdogs(final int n){
return ( n < 5 ? 100 : n >= 5 && n < 10 ? 95 : 90 ) * n;
}
}
后記
三元在實踐中還是不要用了。