Java流程控制 debug if-else else if swtich-case

该博客围绕Java流程控制展开,介绍了顺序、选择和循环结构。着重讲解了if - else、else if和switch - case条件语句的使用方法及注意事项,指出if - else适合范围比较,且应将概率高的条件放前面;还对比了else if和switch - case的效率差异。

思维导图

在这里插入图片描述

总结

流程控制

顺序:
选择:当某个条件符合的时候,会执行指定的代码段。
循环:

if-else else if

If (条件布尔返回值){
返回true的时候,会执行的代码段
}else if( 条件){
返回true的时候,会执行的代码段
}多个else if
else{
以上条件都不满足
}
注意:把概率高的放在前面!!!
一般要用到范围比较时会用if-else

switch-case

Switch(表达式){
Case 常量: 代码块;break;
Case 常量: 代码块;break;

Default: 以上case都不满足会执行的代码段;
}
注意:else if 和 switch-case 的区别:else if会逐个比较,效率比较低,
switch-case编译的时候是逐个比较,但运行的时候会直接跳到目标语句运行。

上午笔记

package day5;

import java.util.Scanner;

/*
 * 第四章     流程控制
 * 能够听懂,但是遇到题就不会做。
 * 
 * 什么是程序的流程控制:
 * 分为三种结构:
 * 顺序结构:程序按部就班的执行,从头到尾。
 * 选择结构:要设置条件(可能是一个,也可能是多个),如果条件成立, 则执行某一个代码段,否则执行其他代码段
 * 循环结构:体现的是重复的执行一件事情。
 */
//一、选择结构
//  在java中语法规定:将的程序结构放在{ }中
//{ 
//   {
//	   
//   }
//}
//  java中程序的层次结构,是使用{ }来代表。
// 1. if-else语句
// 语法:
// 可以只有if,没有else,也可以if和else同时存在。else不能够单独使用。
/* 了解:如果条件成立时执行的代码段,只有一句代码,则可以不加{},但是不建议这样做,可读性差。还可能涉及后期程序维护。
 * if(条件表达式布尔类型){
 *     当条件表达式返回true(条件成立的时候),则执行的代码段
 * }else{
 *     当if条件不成立时,执行的代码段
 * }
 * 其他代码段(跟if和else都没有任何关系)
 */
//【小知识点关于debug】
//bug:程序出现的问题。
//使用相关的工具调试bug的过程:debug
/*
 * 当在eclipse中,以debug模式执行,可以设置程序的断点
 * 断点:在eclipse中可以对某一行设置断点,当程序执行到断点所在的行时,就会暂停,这时候,断点所在的行是没有执行的。
 * (1)在程序行中设置断点,双击鼠标左键,当启用debug模式执行的时候,程序就会停止在这里
 * (2)step over F6 将程序一行一行的执行
 * (3)  F8会让程序执行执行到下一个断点,如果没有下一个断点,则程序会执行完毕。
 * (4) 在调试的过程中,鼠标悬停的位置,会显示变量的值,也可以通过选中表达式,watch来查看表达式的结果
 * 
 */
//public class Day5_1_control_IF {
//	public static void main(String[] args) {
//		 int weight = 190;
//		 if(weight>100){
//			 System.out.println("我该减肥了");
//		     System.out.println("我不敢再胡吃海塞");
//		 }else{
//			 System.out.println("我可以高兴的吃蛋糕");
//		 }
//		 System.out.println("其他代码段");
//	}
//}

//1. 看懂理论知识
//2. 敲一遍跟if else相关的代码
//3. 使用debug调试程序
//4. 练习题
//(1) 判断一个变量gender,如果gender是0,则输出女,否则如果是1,则输出男
//尽量不要对相同的变量进行同级别的if条件判断
//public class Day5_1_control_IF {
//	public static void main(String[] args) {
//		int gender=0;
////		if (gender==0){
////			System.out.println("女");
////		}else{
////			if(gender==1)
////				System.out.println("男");
////			else
////				System.out.println("gender有误");
////		}
//		
//		if (gender==0){
//			System.out.println("女");
//		}else
//			System.out.println("男");
////		else
////			System.out.println("gender有误");
//	}
//}
//(2)通过键盘输入两个数,输出两个数中大的那个数
//思考:如果两个是,采用a>=b比较是可以的,但是如果是3个数,4,这时,还是按照如下的比较
//    比较的过程太过复杂
// 10  2  30
//public class Day5_1_control_IF {
//	public static void main(String[] args) {
//		Scanner sc=new Scanner(System.in);
//		System.out.println("请输入第一个数:");
//		int a=sc.nextInt();
//		System.out.println("请输入第二个数:");
//		int b=sc.nextInt();
//		if(a>=b){
//			System.out.println("最大值"+a);
//		}else{
//			System.out.println("最大值"+b);
//		}
//	}
//}

//(3) 飞机票在淡季的时候有优惠政策,假期的时间没有优惠政策
//   目前时间使用double来表示
//   元旦:1.01--1.03     五一:5.01-5.03   国庆:10.01-10.07    都没有 优惠
//   可以键盘输入时间、输入原来票价、还有折扣,来计算,当前时间飞机票价是多少。标注一下原价、折扣后的价。
//public class Day5_1_control_IF {
//	public static void main(String[] args) {
//		Scanner sc=new Scanner(System.in);
//		System.out.println("请输入时间:");
//		float date=sc.nextFloat();
//		System.out.println("请输入原票价:");
//		float price=sc.nextFloat();
//		float realprice=price;
//		if(date>=1.01f &&date<=1.03 
//				|| date >=5.01f && date<=5.03f 
//				||  date >=10.01f &&date<=10.07f){
//			//不优惠
//			System.out.println("此时无优惠");
//		}else{
//			System.out.println("请输入折扣:");
//			float discount=sc.nextFloat();
//			realprice=price *discount;
//			System.out.println("飞机折扣后的价格为:"+realprice);
//		}
//		System.out.println("飞机票原价:"+price);
//	}
//}


//(4)周一到周五上课,周六:自习,周日:休息。
//通过键盘输入星期几(1-7),输出这一天做什么?
//不要使用else if
//在编程时,需要考虑到发生的概率问题。
//将概率大的放在前面判断
//不合法的数据放在后面
//public class Day5_1_control_IF {
//	public static void main(String[] args) {
//		Scanner sc=new Scanner(System.in);
//		int day=sc.nextInt();
//		if(day<=5 && day>=1){
//			System.out.println("上课");
//		}else{
//			if(day==6){
//				System.out.println("上自习");
//			}else{
//				if(day==7){
//					System.out.println("休息");
//				}else
//					System.out.println("输入有误");
//			}
//		}
//		sc.close();
//	}
//}


//2. if- else if- else
//多选一
//多选一的情况,从上到下进行匹配,如果遇见符合条件的,执行相应的语句块,
//之后的条件表达式都不会执行。
/*语法
 * if(条件表达式1){
 *    如果条件成立,会执行的代码段
 * }else if(条件表达式2){
 *    如果条件成立,会执行的代码段
 * }else if(条件表达式3){
 *    如果条件成立,会执行的代码段
 * }...
 * else{
 *    以上条件都不符合的时候,会执行的代码段
 * }
 * 注意:条件 判断的范围一定要有顺序。多个if 和else if之间不要有交集。
 */
public class Day5_1_control_IF {
	public static void main(String[] args) {
//		int w=101;
//		if(w<=100){
//			System.out.println("我很瘦");
//			System.out.println("可以继续胡吃海塞");
//		}else if(w<=110){//  110>=w>100
//			System.out.println("我需要去健身房了");
//		}else if(w<=120){//  120 >=w>110
//			System.out.println("我晚上不能吃饭了");
//		}else{
//			System.out.println("不能出门了");
//		}
		
//		使用if  else if 解决星期的问题
//		int day=6;
//		if(day<=5 &&day>=1){
//			System.out.println("上课");
//		}else if (day==6){
//			System.out.println("上自习");
//		}else if(day==7){
//			System.out.println("休息");
//		}else{
//			System.out.println("输入 有误");
//		}
//		System.out.println("其他代码段");
		
		
//		工资,超过5000  ,我很穷,超过10000,可以吃饱   超过20000,小康生活,低于5000,活不下去
		int salary=5005;
		if(salary<5000){
			System.out.println("活不下去");
//		}else if (salary<20000){
		}else if (10000<salary &&salary<20000){
			System.out.println("可以吃饱");
		}else if (5000<salary &&salary<10000){
			System.out.println("我很穷");
		}else{
			System.out.println("小康生活");
		}
	}
}
/*在if  else if 和else 选择语句中,需要注意的内容:
 * (1)if 和else if后面有条件,但是else后面没有条件
 *     if 可以单独使用,但是else if 和else 都不能单独使用。
 * (2)if 和多个else if 从上到下顺序匹配,遇到匹配的条件则会执行相应代码,不会再继续向下匹配
 * (3)注意 多个else  if的 顺序,一定不要有交集
 * (4)将可能性发生大的放在前面。但是注意,数据的合法性校验应该放在最后(建议)
 * (5)语句块中,如果只有一句话, 则可以不写{},但是如果有多句,则必须要写。建议始终使用{}
 */

//练习:
//(1)猜数字的问题,继续加入逻辑判断:猜大了?猜小了。
//(2)随机产生012三个数字中的任意一个数,根据数字的不通过,来决定今天晚上吃什么。
//0  牛肉面   1  盖浇饭    2 吃土

下午笔记

package day5;

import java.util.Random;
import java.util.Scanner;

/*
 * 第四章     流程控制
 * 能够听懂,但是遇到题就不会做。
 * 
 * 什么是程序的流程控制:
 * 分为三种结构:
 * 顺序结构:程序按部就班的执行,从头到尾。
 * 选择结构:要设置条件(可能是一个,也可能是多个),如果条件成立, 则执行某一个代码段,否则执行其他代码段
 * 循环结构:体现的是重复的执行一件事情。
 */
//一、选择结构
//1. if  else
//2. if else if  ... else
//3. switch case
/*多分支判断,类似于多个else if
 * 【语法】
 * switch(表达式) { ( 说明:注意表达式的结果必须是常量)
 *    case 常量表达式1 :执行的操作语句;break;
 *    case 常量表达式2 :执行的操作语句;break;
 *    case 常量表达式3 :执行的操作语句;break;
 *    case 常量表达式4 :执行的操作语句;break;
 *    default : 默认语句;
 * }
 * 
 * switch后面的表达式会依次(在编译期间会依次比较,在执行的时候,会直接跳转到匹配的case)
 * 跟case后面的值进行比较,检测跟哪一个case相匹配,如果遇见匹配的会执行对应的case后面语句。
 * case后面经常会放置break,为了在执行完对应的分支之后,跳出switch语句,不再执行后面的语句。
 * default,是在以上条件都不符合的时候,会执行的语句。
 * 
 * 注意:break如果不写,则意味着会将下面的case也进行执行
 *     可以在多个判断同时符合条件的时候,进行使用
 *     
 * 【switch的规则】
 * (1)switch后面的表达式类型:只能是byte , char,short 或者int  ,String或者枚举类,
 *     不能使用了long,或者是浮点类型。
 *  (2) case后面的值,必须是跟表达式相同类型固定常量 ,case后面的常量值不能重复。
 *  (3) default可以省略,但是如果省略,当没有case匹配的时候,则没有任何执行
 *  (4)执行的时候,注意break语句,如果没有break语句,则当遇到匹配的case之后,会将后面的case依次都执行完毕,
 *     无论是否匹配。
 */

//public class Day5_2_control_Switch {
////	public static void main(String[] args) {
//		int x=1;
////		long y=2;
////		String x="hello";
//		switch(x){
////			case 1:System.out.println("值为1");break;
////			case 2:System.out.println("值为2");break;
//			case 1:
//			case 2:System.out.println("值为1或者是2");break;
//			case 3:System.out.println("值为3");break;
//			case 4:System.out.println("值为4");break;
//			default:System.out.println("值未知");
//		}
//		System.out.println("其他代码段");
//	}
//}
//【问题】使用if  else if else  和switch case 都是多选一,区别?
// 从内部运行的角度看 ,switch case会生成一个跳转,跳转到需要执行的case语句中。
// switch case相当于在编译期就已经知道要执行哪一个case。
// if  else if else :在运行期的时候,从上到下遍历条件分支,直至遇见匹配条件为止。
// 所以执行的效率来看,switch如果是条件比较多的时候,效率高。
//缺点:switch 代码复杂,规则多,case的后面只允许放常量。只适合判断等值判断,不适合做范围判断。
//练习:
//(1)将0女,1男使用switch case 解决。
//(2)+-*/使用switch case解决
//public class Day5_2_control_Switch {
////	public static void main(String[] args) {
////		int gender=0;
////		switch(gender){
////			case 0:System.out.println("女");break;
////			case 1:System.out.println("男");break;
////			default:System.out.println("gender有误");
////		}
//		
//		
//		Scanner sc=new Scanner(System.in);
//		System.out.println("请输入一个数:");
//		double a=sc.nextDouble();
//		System.out.println("请输入一个数:");
//		double b=sc.nextDouble();
//		System.out.println("操作符:+-*/");
//		String oper=sc.next();
//		String result=a+oper+b+"=";
//		boolean tag=true;
//		switch (oper){
//			case "+":result+=(a+b);break;
//			case "-":result+=(a-b);break;
//			case "*":result+=(a*b);break;
//			case "/":result+=(a/b);break;
//			default:
//				System.out.println("输入的操作符有误");
//				tag=false;
//		}
//		if(tag)
//			System.out.println(result);
//	}
//}


//练习,输入成绩,超过60算及格,否则不及格
//public class Day5_2_control_Switch {
//	public static void main(String[] args) {
//		Scanner sc=new Scanner(System.in);
//		System.out.println("请输入学生的成绩:");
//		int score=sc.nextInt();
//		switch(score/60){
//			case 0:System.out.println("不及格");break;
//			case 1:System.out.println("及格");break;
//			default:System.out.println("成绩输入有误");
//		}
//	}
//}

//练习:成绩的等级  90及以上A   70及以上B    60及以上C   60以下D

public class Day5_2_control_Switch {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入学生的成绩:");
		int score=sc.nextInt();
		switch(score/10){
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:System.out.println("D");break;
			case 6:System.out.println("C");break;
			case 7:
			case 8:System.out.println("B");break;
			case 9:
			case 10:System.out.println("A");break;
			default:System.out.println("成绩输入有误");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值