本节课我们学习java基础部分的流程控制语句,流程控制语句方为三种结构: 顺序结构,任何程序的执行都是自上而下,从左到右的执行。
本节课的重点是分支结构,if语句的使用
循环语句我们下一节课在学习,但循环结构作为流程控制语句的一种,把他列在了这里。
首先我们来看流程控制语句的三种表现形式:
流程控制语句结构:
1. 顺序结构
,自左向右,从上到下,顺序执行,这是任何语言执行的特性
2. 分支结构
根据选择不同,执行不同的代码。if…else和switch…case (这是本节课的重点,需要主要的是,所有能用switch …case的地方一定能够使用if … else. 反之不一定成立。)
3. 循环结构
根据条件循环重复执行某段代码。for(普通for和增强for)、while和do…while三种
本节将用到 核心库中的类: String,System,Math,Scanner等
注:
如果这个类型定义在java.lang包下,那么直接使用,无需导包,直接使用简名称
但是如果这个类型定义在其他包下,那么需要写全名称或导包
全名称:java.util.Scanner
分支结构语法:
1. 单分支结构;
if(条件表达式){
//当条件表达式结果为true时,需要执行的语句块
}
2. 双分支结构
if(条件表达式){
//当条件表达式结果为true时,需要执行的语句块1
}else{
//当条件表达式结果为false时,需要执行的语句块2
}
3. 多分支条件语句:
if(条件表达式1){
//当条件表达式1结果为true时,需要执行的复合语句1
}else if(条件表达式2){
//当条件表达式2结果为true时,需要执行的复合语句2
}
…
else{
//当上述条件表达式结果都为false时,需要执行的语句
}
注: 最后的else不是必须的,可以缺省
选择结构
语法:
switch(表达式){
case 常量值1:
//执行语句块1
[break;]
case 常量值2:
//执行语句块2
[break;]
......
case 常量值n:
//执行语句块n
[break;]
default:
//执行缺省语句
[break;]
}
注意:
(1)表达式返回的结果类型只能是byte,short,char,int,枚举(JDK1.5之后),String(JDK1.7之后)
(2)表达式返回的结果的类型需要与case后的值的类型保持一致
(3)case后面只能跟常量值,不能是变量值或不确定的表达式值
(4)同一个switch语句,case的常量值必须互不相同
(5)break是可选的,当表达式返回结果与某个case后的值进行匹配成功后,执行相应分支的语句,一旦进入某个分支后,只有直到遇到break才会退出switch,否则将会继续执行下一个case的语句。
(6)default是可选的。位置也不一定是最后,也可以在任意case的位置。但是不管再哪里,都是要所有case的常量值不匹配后才会进入default分支,一旦进入
输入输出案例
class Order{
public static void main(String[] args){
//java.util.Scanner是一个扫描仪类型,是引用数据类型,首字母大写
//System.in指定了数据的来源是表示的输入设备,默认代表键盘输入
// input是一个变量
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入你的年龄: ");
int age = input.nextInt(); //从扫描仪中获取一个int的值,赋值给age这个变量
System.out.println("请输入你的姓名: ");
String name = input.next();
System.out.println("请输入你的体重: ");
double weight = input.nextDouble();
System.out.println("请输入你的性别");
//因为单个char用的太少,Scanner中没有提供char的方法,所以
//我们先按字符串接收,在截取第一个字符
char gender = input.next().charAt(0);
System.out.println("我的姓名是"+name+",我的年龄是"+age+",我的性别是"+gender+",我的体重是"+weight);
}
}
练习题
- 判断年份是否为闰年(单分支语句)
// 判断年年份是否为闰年
//闰年的条件 1) 被4整除不能被100整除或被400整除
class Test03_If{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入年份:" );
int year = input.nextInt();
int days = 28;//平年
//如果是闰年
if(year % 4 == 0 && year%100 != 0 || year % 400 ==0){
days = 29;
}
System.out.println(year + "的2月份总天数有: "+days );
}
}
- 判断一个数字是奇数还是偶数(双分支语句)
class Odd_Even_number{
public static void main(String[] args){
//从键盘输入一个整数,判断是偶数还是奇数
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入一个整数:" );
int num = input.nextInt();
//判断 双分支条件语句
if(num%2 == 0){
System.out.println(num +"是个偶数");
}else{
System.out.println(num + "是个奇数");
}
}
}
- 多条件语句
岳云鹏参加Java考试,他和父亲岳不群达成承诺:如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone7plus;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
部分学员的方案:
public class Prizes{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入你这次的考试成绩: ");
int score = input.nextInt();
if(score == 100){
System.out.println("奖励一辆BMW");
}else if(score>80 && score <= 99){
System.out.println("奖励一个iphone 7plus");
}else if(score>=60 && score<=80){
System.out.println("奖励一个iPad");
}else{
System.out.println("考成这样还想要奖品");
}
}
}
其他学员的方案:
public class Prizes{
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入你这次的考试成绩: ");
int score = input.nextInt();
if(score == 100){
System.out.println("奖励一辆BMW");
}else if(score>80 ){
System.out.println("奖励一个iphone 7plus");
}else if(score>=60 ){
System.out.println("奖励一个iPad");
}else{
System.out.println("考成这样还想要奖品");
}
}
}
注: 如果只为了完成题目且成绩必须是【0-100】,两个方案都可以,如果成绩大于100,会方案一会汇入到score<60分的分支中去, 方案二会汇入sorce>80的分支中