引言
训练JS#7:
if..else和三元运算符
在Javascript中,if..else
是最基本的条件语句,它由三部分组成:condition, statement1, statement2
像这样:
if (condition) statementa
else statementb
这意味着如果条件为真,则执行statementa,否则执行statementb。如果statementa或statementb多行,则需要在JS的头尾添加{
并}
保持相同的缩进Python并将它放在end
Ruby确实结束的地方。
例如,如果我们想判断数字是奇数还是偶数,我们可以编写如下代码:
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";
}
此函数根据参数年龄返回不同的值。
看起来很复杂?好吧,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个参数:n
,n是购买热狗的客户数量,不同的数量有不同的价格(参考下表),返回一个数字表示客户需要支付多少钱。
+---------------+-------------+
| 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;
}
}
后记
三元在实践中还是不要用了。