思维导图
总结
流程控制
顺序:
选择:当某个条件符合的时候,会执行指定的代码段。
循环:
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("成绩输入有误");
}
}
}