JavaSE-day03-流程控制、选择语句、分支结构

1.流程控制

1.1定义

使用不同的关键字/语法来控制代码的执行流程/顺序

1.2分类

顺序结构:代码从上往下一次执行

分支结构:到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。

循环结构:某段代码相同或者相似,使用相同的逻辑。使用一定的格式,来完成相同代码的反复执行

2.选择语句--switch

2.1switch语句

语句格式

switch(表达式) {
  case 常量值1:
    语句体1;
    break;
  case 常量值2:
    语句体2;
    break;
  ...
  default:
    语句体n+1;
    break;
}

执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

 判断一天是星期几:

public static void main(String[] args) {
    //定义变量,判断是星期几
    int weekday = 6;
    //switch语句实现选择
    switch(weekday) {
        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.2case的穿透性

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

 键盘录入一个月份,输出这个月份的季节
345月是春季,678是夏季,9、10、11秋季,12、1、2冬季
其他数字,没有任何季节,录入错误

System.out.println("请输入月份:");
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month){
	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("月份输入错误");
}

2.3char类型在switch中的应用

		int x = 1, y = 2;
		char ch = '*';
		switch (ch) {
		case '+':
			System.out.println("x+y=" + (x + y));
			break;
		case '-':
			System.out.println("x-y="+(x-y));
			break;
		case '*':
			System.out.println("x*y="+(x*y));
			break;
		case '/':
			System.out.println("x/y="+(x/y));
			break;
		default:
			System.out.println("不靠谱");		
}

3.分支结构

3.1if语句第一种格式: if

格式:

if(布尔表达式){
    语句体;
}

执行流程:

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体

如果是false就不执行语句体

 

 小毛参加考试,如果小毛考试成绩及格(>60分),则输出小毛考试成绩及格。

public static void main(String[] args) {
		// 键盘输入小毛获得的分数,如果>=60 输出考试及格
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入小毛获得分数:");
		int score = sc.nextInt();  // 键盘输入一个整数赋值给 score
		
		if(score>=60){
			System.out.println("小毛考试及格了");
			System.out.println("回家不用挨揍了");
		}
		/*
		if(score>=60){
			System.out.println("小毛考试及格了");
        }
	}

 找出int x = 12;int y = 20;int z = 8;三个数中最大的数

public static void main(String[] args) {
		int a = 11;
		int b = 65;
		int c = 99;
		// 找出三个数中的最大值
		// 编程方法:假设修正法
		int max = a;   // 1 假设  a最大
		if(b>max){    // 修正
			max = b;
		}
		
		if(c>max){    // 修正
			max = c;
		}
		System.out.println("最大值为:"+max);
	}

3.2if语句第二种格式:if...else

格式:

if(关系表达式) {
    语句体1;
}else {
    语句体2;
}

执行流程:

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体1

如果是false就执行语句体2

注意:if代码块和else代码块只会执行其中一个

 小邓参加考试,如果成绩>=60分,输出“成绩及格”。如果成绩<60分,输出“成绩不及格”。

public static void main(String[] args) {
		System.out.println("请输入小邓的成绩:");
		Scanner sc = new Scanner(System.in);
		int score = sc.nextInt();
		if(score>=60){
			System.out.println("成绩及格");
		}else{
			System.out.println("不及格");
		}
}

3.3if语句第三种格式: if...else if ...else

格式:

if (判断条件1) {
    执行语句1;
} else if (判断条件2) {
    执行语句2;
}
...
}else if (判断条件n) {
    执行语句n;
} else {
    执行语句n+1;
}

执行流程:

首先判断关系表达式1看其结果是true还是false

如果是true就执行语句体1

如果是false就继续判断关系表达式2看其结果是true还是false

如果是true就执行语句体2

如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1。

 根据键盘输入的数值不同,打印对应的星期数。

int x = 4;
if (x == 1) {
	System.out.println("星期一");
} else if (x == 2) {
	System.out.println("星期二");
} else if (x == 3) {
	System.out.println("星期三");
} else if (x == 4) {
	System.out.println("星期四");
} else if (x == 5) {
	System.out.println("星期五");
} else if (x == 6) {
	System.out.println("星期六");
} else if (x == 7) {
	System.out.println("星期日");
} else {
	System.out.println("请输入数字1-7");
}

根据用户输入的不同成绩(0~100),给出相应的提示:优秀,良好,及格,不及格...              

public static void main(String[] args) {
		System.out.println("请输入成绩:");
		Scanner sc = new Scanner(System.in);
		int score = sc.nextInt();
		if(score>=90 && score<=100){
			System.out.println("优秀");
		}else if(score>=80 && score<90){
			System.out.println("良好");
		}else if(score >=60 && score<80){
			System.out.println("及格");
		}else if(score<60 && score>=0){
			System.out.println("不及格");
		}else{
			System.out.println("分数输入有误");
		}
	}

 3.4if和switch的区别

1、相同点:

if语句和switch语句都可以表达分支结构

2、不同点:

(1)if语句格式相对灵活,更加强大,switch语句相对弱小。所有的switch语句都可以被if语句替代。

(2)if语句更多的是做一些连续性的判断,而switch语句更多的是做一些离散性的匹配

(3)if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以相对来说switch的效率高一些。

练习1: 判断闰年
闰年是公历中的名词
普通闰年:能被四整除但不能被100整除的年份为普通闰年(2004是闰年,1999不是闰年)
世纪闰年:能被400整除的为世纪闰年(2000为世纪闰年,1900不是世纪闰年)

public static void main(String[] args) {
		System.out.println("请输入一个年份:");
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		if((year%4==0 && year%100!=0) || year%400==0){
			System.out.println(year+"年是闰年");
		}else{
			System.out.println(year+"年不是闰年");
		}
}

练习2:水仙花数

说明:所谓的水仙花数是指一个三位数,其各个位数字的立方和等于该数本身。 

举例:153就是一个水仙花数。 153 = 1*1*1 + 5*5*5 + 3*3*3

public static void main(String[] args) {
		System.out.println("请输入一个三位整数");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();  
		
		/*
		 * 取出num这个三位数的各个位上的数字    判断各个位上的数字的立方和是否等于num
		 * */
		int gewei = num%10;
		int shiwei = num/10%10;
		int baiwei = num/100;
	if(num==gewei*gewei*gewei+shiwei*shiwei*shiwei+baiwei*baiwei*baiwei){
			System.out.println(num+"是水仙花数");
		}else{
			System.out.println(num+"不是水仙花数");
		}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值