Java分支结构
第1关:Java分支结构之多重if
任务描述
本小节需要你实现一个星级成绩评定系统,效果如下:
相关知识
若要完成本小节的任务,需要你先了解多重If语句相关知识。
多重If语句
在条件 1 不满足的情况下,才会进行条件 2 的判断;当前面的条件均不成立时,才会执行 else 块内的代码,例如:如果一个人年龄介于 35岁至 60 岁之间,就是“中年”;如果年龄介于 18 岁至 35 岁之间,则是“青年”; 18 岁以下则是“少年”
如下:
if (<条件1>) {
<条件1成立执行的代码>
}else if(<条件2>){
<条件2成立执行的代码>
}else if(<条件3>){
<条件3成立执行的代码>
}else{
<以上条件都不成立执行的代码>
}
执行过程:
eg:
int age = 37;
if(age < 18){
System.out.println("少年");
}else if(age >=18 && age < 35){
System.out.println("青年");
}else if(age >= 35 && age <60){
System.out.println("中年");
}else{
System.out.println("老年");
}
编程要求
在start-end区域在Begin-End区域编写一个星级成绩评定系统,规则如下:
- 90分及以上:五星成绩。
- 80-90分(包括80分,不包含90分): 四星成绩。
- 70-80分(包括70分,不包含80分):: 三星成绩。
- 60-70分(包括60分,不包含70分):: 俩星成绩。
- 60分以下(不包含60分)::无星成绩。
效果图如下:
测试说明
我会对你编写的程序测试五次,不要偷懒哦!
开始吧,骚年!
package step3;
import java.util.Scanner;
public class HelloStep3 {
public static void main(String[] args) {
System.out.println("星级成绩评定系统");
System.out.println("请输入成绩:");
Scanner sc = new Scanner(System.in);
/******start******/
int score = sc.nextInt(); // 读取输入的成绩值
if(score >= 90){//age >=90 && age < 80
System.out.println("*****五星成绩");
}else if(score >=80 && score < 90){
System.out.println("****四星成绩");
}else if(score >= 70 && score <80){
System.out.println("***三星成绩");
}else if(score >= 60 && score <70){
System.out.println("**俩星成绩");
}else{
System.out.println("无星成绩");
}
/******end******/
}
}
第2关:Java分支结构之Switch
任务描述
本关需要你使用Switch完成一个能根据用户输入的月份,给出对应的季节的小程序。效果图如下:
相关知识
当需要对选项进行等值判断时,使用 switch 语句会让我们的代码更加简洁明了。
Switch语句
如果说我们前面学习的if...else可以比作判断题的话,那我们接下来要掌握的switch语句就可以看做是一个选择题了。例如,根据输入的选项决定中午吃什么,选1,吃黄焖鸡米饭,选2,吃牛肉盖饭,选3,吃螺蛳粉,选其他(default)就不吃。
int input = 3;
switch (input) {
case 1:
System.out.println("吃黄焖鸡米饭");
break;
case 2:
System.out.println("吃牛肉盖饭");
break;
case 3:
System.out.println("吃螺蛳粉");
break;
default:
System.out.println("不吃");
break;
}
//看完这段代码,能告诉我今天中午吃什么吗?
在上述案例中,input就像我们在做选择题时填的答案,case后面的值就相当于选项,一个case代表着一种情况。
语法:
switch(表达式){
case 常量1:
<若干语句1>
break;
case 常量2:
<若干语句2>
break;
......
default:
<不满足上述所有情况执行的代码>
break;
}
执行过程:当switch后表达式的值和case语句后的值相同时,从该位置开始向下执行,直到遇到break语句或者switch语句块结束(即遇见"}"结束);如果没有匹配的case语句则执行default块的代码。
思考
根据上述知识,来做个思考题。 第一题:
第二题:
能告诉我这两段代码分别输出的是什么吗?在评论区贴出答案吧!
告诉你几个小秘密
- switch 后面小括号中表达式的值必须是整型或字符型(在8版本之后字符串类型也可以作为表达式的值);
- case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2;
- default 块可以出现在任意位置,也可以省略。
编程要求
请在start-end区域中,用switch语句在Begin-End区域补全代码,实现根据月份输出季节的功能。 规则如下:
- 一年有四季 春季(3,4,5)夏季(6,7,8)秋季(9,10,11) 冬季(12,1,2)
测试说明
我会对你的程序进行测试,如下: 测试输入:1 预期输出:1月是冬天
测试输入:3 预期输出:3月是春天
测试输出:6 预期输出:6月是夏天
开始你的任务吧!
package step4;
import java.util.Scanner;
public class HelloSwitch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int input = sc.nextInt(); //获取输入的月份
//通过输入的月份来判断当前季节并输出
/*****start*****/
String season;
switch (input) {
case 1:
case 2:
case 12:
season = "冬天";
break;
case 3:
case 4:
case 5:
season = "春天";
break;
case 6:
case 7:
case 8:
season = "夏天";
break;
case 9:
case 10:
case 11:
season = "秋天";
break;
default:
season = "无效的月份";
break;
}
System.out.println(input + "月是" + season);
/*****end*****/
}
}