流程控制语句之if语句以及switch语句的使用
一、if语句
1.格式(1)
if(表达式){
语句;
}
执行流程:
针对一种情况进行判断
判断表达式是否成立,如果为true,执行语句,否则,不执行!
注意事项:
- 针对格式1这种情况,语句中的大括号可以省略,但是不建议,{}表示一个作用域
- if后面不能有分号,有分号的地方不能有{}
- if语句后面如果有分号,if语句没有意义
2.格式(2)
if(表达式){
语句1;
}else{
语句2;
}
执行流程
- 首先判断表达式是否成立,
- 如果成立,执行语句1
- 不成立,执行语句2
3.格式(3)
if(表达式1){
语句1;
}else if(表达式2){
语句2;
...
...
}else{
语句n+1;
}
应用场景:
针对多个表达式进行判断
执行流程:
- 首先判断表达式1是否成立,如果成立,执行语句1
- 如果不成立,继续判断表达式2是否成立,如果成立,执行语句2
- 如果表达式都不成立,执行else语句,执行语句n+1…
4. 应用:
1) 键盘录入月份的值
3,4,5------春季
6,7,8------夏季
9,10,11----秋季
12,1,2-----冬季
import java.util.Scanner;
class IfText1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份");
int a = sc.nextInt();
if(a==3 || a==4 || a==5){
System.out.println("春季");
}else if (a==6 || a==7 || a==8){
System.out.println("夏季");
}else if(a==9 || a==10 || a==11){
System.out.println("秋季");
}else if(a==12 || a==1 || a==2){
System.out.println("冬季");
}else{
System.out.println("数据不合法");
}
}
}
2) x和y的关系满足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1 y = 2x – 1;
求y的值
import java.util.Scanner;
class IfText2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数值");
int x = sc.nextInt();
int y ;
if (x>=3){
y = 2*x +1 ;
}else if (x>=-1 && x<3){
y = 2*x ;
}else{
y = 2*x-1 ;
}
System.out.println("y的值为:"+y);
}
}
3) 键盘录入三个数据,比较数据的最大值
import java.util.Scanner;
class IfText3{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据");
int num1 = sc.nextInt();
System.out.println("请输入第二个数据");
int num2 = sc.nextInt();
System.out.println("请输入第三个数据");
int num3 = sc.nextInt();
int max;
if (num1 > num2){
if(num1 > num3 ){
max = num1;
}else{
max = num3;
}
}else{
if (num2 > num3 ){
max = num2;
}else {
max = num3;
}
}
System.out.println("最大值为:"+max);
}
}
4) 键盘录入一个数,判断是奇数还是偶数
import java.util.Scanner;
class IfText4{
publics static void main(String[] args){
Scanner sc = new Scanner (System.in);
System.out.println("请输入一个数据");
int a = sc.nextInt();
if ( a % 2 = 0){
System.out.println("该数据为偶数");
}else{
System.out.println("该数据为奇数");
}
}
}
二、switch语句
1. 格式
switch(表达式){
case 值1:
语句1;
break ;
case 值2:
语句2;
break ;
...
...
default:
语句n+1;
break ;
}
执行流程:
- switch表达式 得到一个结果,首先需要和case后面的值1进行比较,如果匹配,执行语句1,遇见break,结束语句
- 如果case后面的值1不匹配,然后case 值2进行匹配,如果成功,执行语句2,break结束
- 依次这样进行选择判断,如果都不匹配,执行default语句,结束!
注意事项:
- case后面只能跟常量,不能变量
- default语句可以在switch语句中的任意位置,
如果在末尾,break可以省略,但是如果在语句中,那么break不能省略;否则,会造成一种现象,case穿透! - switch语句的结束条件什么?
a)语句break,语句结束
b)程序默认执行到末尾!
2. switch后面的表达式可以跟数据类型
int,short,char,byte
JDK1.5(包含)以后 表达式可以是枚举类型(enum)(第二阶段—> jdk新特性 ) (引用类型)
JDK1.7(包含)以后 表达式可以是String类型
3.应用
1)键盘录入数据,判断当前星期几
1,星期一
2,星期二
3,星期三
4,星期四
5,星期五
6,星期六
7,星期日
如果录入其他数据,提示"非法数据"
import java.util.Scanner ;
class SwitchText1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入一个数据:") ;
int week = sc.nextInt();
switch(week){
case 1:
System.out.println("星期一") ;
break ;
case 2:
System.out.println("星期二") ;
break ;
case 3:
System.out.println("星期三") ;
break ;
case 4:
System.out.println("星期四") ;
break ;
case 5:
System.out.println("星期五") ;
break ;
case 6:
System.out.println("星期六") ;
break ;
case 7:
System.out.println("星期日") ;
break ;
default:
System.out.println("非法数据") ;
break ;
}
}
}
2) 键盘录入月份的值
3,4,5------春季
6,7,8------夏季
9,10,11----秋季
12,1,2-----冬季(利用case穿透)
import java.util.Scanner;
class SwitchText2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份");
int a = sc.nextInt();
switch(a){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("无效的数据");
break;
}
}
}