3.5返回语句
在日常生活中我们经常会出现打断计划的一些情况,比如说我和好朋友约了明天下午4点去学校操场打篮球,结果到了第二天高烧39度,只能取消打球活动了。
在Java当中,可以通过返回语句来完成程序的中断,通过下面代码完成
public static void plan(double temperature){ System.out.println("准备出门去学校"); if(temperature>38){ // 体温超过38度,属于发烧,忌运动 return; } System.out.println("去操场踢球"); }
从上面的代码可以看出,多了一个return;这就是返回语句,代码执行到这里的时候就会中断后面的代码。
有一点需要注意,就是return;语句之后是不能有其他代码的(除非是嵌套代码里,比如上边的例子)。
例一:超市满100送鸡蛋活动
/** * 返回语句 */ public class ConditionTest13 { public static void main(String[] args) { pay("三文鱼",158); pay("大白菜",8); } public static void pay(String productName, double price) { System.out.println("今天购买了:" + productName + ",价格是:" + price); // 去超市买水果,有满100送鸡蛋的活动,如果不满足100的金额啥都没有了,完善代码 if (price<100){ return; } System.out.println("满100送鸡蛋"); } }
例二:四六级考试0分不打印成绩
*/ * 返回语句 */ public class ConditionTest14 { public static void main(String[] args) { report("小A", 4, 426); report("小B", 4, 300); report("小C", 4, 500); report("小D", 6, 400); report("小E", 6, 505); report("小F", 6, 0); } public static void report(String name, int level, int score) { if (score >= 425) { if (level == 4) { System.out.println("恭喜你通过英语四级考试"); } else if (level == 6) { System.out.println("恭喜你通过英语六级考试"); } } else if (score==0){ return; } System.out.println(name + " 本次考试成绩是:" + score); } }
3.6递归
递归的规范其实只有一句话:一个方法也可以调用它自身。
现在我们提供一个倒计时的功能
public class CountDown { public static void main(String[] args) { count(3); } public static void count(int number) { System.out.println(number); number = number - 1; if (number == 0) { System.out.println("程序执行完毕"); return; } count(number); } }
这个程序就在count这个方法里调用了它自身,这样更加灵活。
玩一个歌词的小游戏,有一首歌:99瓶啤酒,它的歌词第一句是主要的:
99瓶啤酒在墙上,99瓶啤酒,拿下一瓶,传给他人,98瓶啤酒在墙上,98瓶啤酒,拿下一瓶,传给他人,97瓶啤酒在墙上
随后的歌词和前面类似,但是啤酒数量越来越少,直到最后拿完最后一瓶,歌词如下:
没有啤酒在墙上,没有啤酒,不能再拿了,不能再传了,因为墙上没有啤酒了
用递归方法来完成
/** * 99瓶啤酒 */ public class ConditionTest16 { public static void main(String[] args) { game(99); } public static void game(int num){ System.out.println(num+"瓶啤酒在墙上,"+num+"瓶啤酒,拿下一瓶,传给他人,"); num=num-1; if (num==0){ System.out.println("没有啤酒在墙上,没有啤酒,不能再拿了,不能再传了,因为墙上没有啤酒了"); return; } game(num); } }