今日内容
1.if
2.switch
3.while,do-while,for
零、复习
1算术运算符中除法特性
- 整数相除不保留小数 10/3=3
2++什么作用,i++和++i什么区别
- 让数据自增1
- i++,是++在后先使用后自增
- ++i,是++在前先自增后使用
3&& 和 & 有相同点和不同点
- 相同点: 两边判断式子,一错就错全对才对
- 不同点: &&有短路效果,当第一个式子结果错的时候后面式子不执行
4三目运算的语法格式
- 数据类型 变量 = 布尔表达式 ? 对时执行 : 错时执行;
- String s = a > b ? “a大” : “b大”;
5解释如下代码的错误
short s = 1;
s = s + 1;
- s是short类型变量,数字1int类型
- s+1执行完,结果的数据类型是int
- 将int结果赋值给s变量,但是s变量是short类型,即int类型转成short
- 但是int到short默认不行,所以报错
- 解决方案: s = (short)(s + 1);
- 或者 s += 1;
一、流程控制语句
流程: java的执行流程(从main方法中从上至下,逐行执行)
控制: 通过一些技术改变这些流程(选择的执行,跳过不执行,循环重复执行)
能实现流程控制的语句有
- 分支语句: if,if-else,elseif
- 选择语句: switch-case
- 循环语句: while,do-while,for
二、分支语句(重要)
2.1 if(单分支)
if (布尔表达式) {
执行语句;
}
- 遇到if,就开始判断后面式子
- 如果式子是true 就执行{}内语句
- 如果式子false 就跳过{}内不执行,而后续的
// 判断能不能进入网吧??int age = 8;if (age >= 18) {System.out.println("可以上网,欢迎光临~" );}
2.2 if-else(双分支)
if(布尔表达式) {
执行语句;
} else {
执行语句;
}
- 遇到if,执行判断
- 结果为true.执行if后的语句,不再执行else
- 结果为false.跳过if执行else后的语句
int age2 = 8;if (age2 >= 18) {System.out.println("可以上网!" );} else {System.out.println("不可以上网!" );}
2.3 练习题
package com.qf.contrl;import java.util.Scanner;/*** --- 天道酬勤 ---** @author QiuShiju* @date 2024/2/22* @desc if和if-else的练习*/
public class Demo2 {public static void main(String[] args) {// 定义两个变量,输出其中最大值(不考虑相等)int a = 1;int b = 2;if (a > b) {System.out.println("max is a = " + a);} else {System.out.println("max is b = " + b);}// 定义三个变量,输出其中最大值(不考虑相等)int x = 11;int y = 22;int z = 3;if (x > y) {if (x > z) {System.out.println("x大" );} else {System.out.println("z大" );}} else {if (y > z) {System.out.println("y大" );} else {System.out.println("z大" );}}// 声明一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。int num = 2;if (num % 2 == 0) { // 整除就是余数为0System.out.println("num = " + num+",是偶数" );} else {System.out.println("num = " + num+",是奇数" );}// 编写一个程序,输入用户名和密码,// 要求用户名和密码同时正确才输出"登录成功",// 否则输出"用户名或密码错误"// 假设正确的用户名是数字1,密码是数字2System.out.println("--- xxx系统 ----" );Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:" );int username = scanner.nextInt( );// 用户名System.out.println("请输入密码:" );int password = scanner.nextInt( );// 密码if (username == 1 && password == 2) {System.out.println("登录成功,欢迎进入xxx系统" );} else {System.out.println("用户名或密码错误!" );}}
}
2.4 elseif(多分支)
语法
if(布尔表达式1) {执行语句1; } else if(布尔表达式2){执行语句2; } else if(布尔表达式3){执行语句3; } ... {} else {执行语句n; }
执行顺序:
- 遇到if执行判断,如果为true,执行if后语句1,后面的都不再执行
- 如果if是false,跳过语句1,判断第二个if,如果此时为true,执行语句2,后面不再执行
- 如果判断2为false,跳过语句2,执行第三个判断…
- 依次类推
- 如果以上判断都失败,就执行最后的else
给定一个成绩,根据成绩的范围打印相应的等级。90及以上为"A级",80-89为"B级",70-79为"C级",60-69为"D级",60以下为"E级"。
int score = 92;if (score >= 90) {System.out.println("A" );} else if (score >= 80) {System.out.println("B" );} else if (score >= 70) {System.out.println("C" );} else if (score >= 60) {System.out.println("D" );} else {System.out.println("E" );}
给定两个整数,比较它们的大小并打印结果。如果第一个数较大,输出"第一个数较大",如果第二个数较大,输出"第二个数较大",如果两个数相等,输出"两个数相等"。
int x = 11;int y = 22;if (x > y) {System.out.println("x > y" );} else if (x < y) {System.out.println("x < y" );} else {System.out.println("x == y" );}
编写一个程序,根据用户输入的月份,判断该月份的天数并输出。假设输入的月份范围为1到12。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入月份:");
int month = scanner.nextInt( );// 月
if (month >= 1 && month <= 12) {if (month == 2) {System.out.println("28天或者29天");} else if (month == 4 || month == 6 || month == 9 || month == 11) {System.out.println("30天");} else {System.out.println("31天");}
} else {System.out.println("输入的月份有误!!!");
}
三、选择语句(switch,了解)
类似于else-if,实现多选一的效果,语法
switch(值){case 值:执行语句;break;case 值:执行语句;break;...default:执行语句; }
switch: 转换,选择 case: 情况,案例 break: 破坏打断 default: 默认
package com.qf.contrl;/*** --- 天道酬勤 ---** @author QiuShiju* @date 2024/2/22* @desc 演示switch*/
public class Demo4 {public static void main(String[] args) {// 老年机打电话,长按1打给110// 长按2打给120,长按3打给119// 其他打给儿子/女儿int num = 1;switch (num) { // ()内是数值,不能写判断式子case 1: // case后是定值,不能写变量,后面是冒号:System.out.println("打给110" );break; // break可以不写,不写的话会造成case击穿case 2:System.out.println("打给120" );break;case 3:System.out.println("打给119" );break;default: // 以上case都不成立,执行此处System.out.println("打给孩子们!!" );}}
}
四、循环语句
循环语句的作用: 就是能代码循环重复执行
为什么? 提供效率…减少代码重复的
如何实现重复循环?
- while循环
- do-while循环
for循环
4.1 while
while(布尔表达式){
执行语句;
}
执行流程:
- 遇到while,判断式子
- 如果为true,执行{}内语句,回头继续再判断
- 直到当判断结果为false时跳出循环
练习题
package com.qf.contrl;/*** --- 天道酬勤 ---** @author QiuShiju* @date 2024/2/22* @desc while语句*/
public class Demo5 {public static void main(String[] args) {// 输出5遍 I Love China.System.out.println("-- 输出5遍 I Love China. --" );int i = 1;while (i <= 5) {System.out.println("I Love China");i++;}/*** 一个合适的循环,需要有四部分* 1) 循环初始值* 2) 循环控制条件* 3) 循环内容* 4) 循环迭代*/// 输出1-10System.out.println("-- 输出1-10 --" );int a = 1;while (a < 11) {System.out.println(a );a++;}// 输出10-1System.out.println("-- 输出10-1 --" );int b = 10;while (b > 0) {System.out.println(b );b--;}// 输出1-100中既能被3整除又能被5整除的所有数System.out.println("-- 输出1-100中既能被3整除又能被5整除的所有数 --" );int c = 1;while (c < 101) {if (c % 3 == 0 && c % 5 == 0){System.out.println(c );}c++;}// 找出1~2024年中所有的闰年// (年份能被4整除,且不能被100整除,或者能被400整除的年份)System.out.println("-- 找出0~2024年中所有的闰年 --" );int year = 1;while (year <= 2024) {if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){System.out.println(year+"年是闰年!" );}year++;}}
}
4.2 do-while(了解)
do {
执行语句;
}while(布尔表达式);
package com.qf.contrl;/*** --- 天道酬勤 ---** @author QiuShiju* @date 2024/2/22* @desc do-while*/
public class Demo6 {public static void main(String[] args) {// 输出1-10int a = 1;do {System.out.println(a );a++;}while (a < 11);// 输出1-100的偶数int b = 1;do {if (b % 2 == 0){System.out.println(b );}b++;}while (b < 101);/*** while和do-while区别* 1 while是先判断后执行* 2 dowhile是先执行一次再判断*/}
}
4.3 for(重点
)
for循环是使用的最多的循环语句!!!
语法
for(初始值;控制条件;迭代){执行语句;
}
练习
package com.qf.contrl;/*** --- 天道酬勤 ---** @author QiuShiju* @date 2024/2/22* @desc for循环*/
public class Demo7 {public static void main(String[] args) {// 输出1-10for (int i = 1; i < 11; i++) {System.out.println(i);}// 求出1-10的和int sum = 0;for (int i = 1; i < 11; i++) {// sum = i + sum;sum += i;}System.out.println("1-10的和:sum = " + sum);// 求出1-100的奇数和int sum2 = 0;for (int i = 1; i < 101; i++) {if (i % 2 == 1) {sum2 += i;}}System.out.println(sum2);}
}
4.4 for循环嵌套[熟练]
public static void main(String[] args) {System.out.print("输出后不换行");System.out.println("输出内含后,会换行");// -------------/*** 要求输出数据只能输出一颗** 打印出正方形* ********** ********** ********** **********/// 外层循环控制行数for(int i = 1;i < 5;i++) {// 内层循环控制列数for (int j = 1; j < 10; j++) {System.out.print("*");// 输出后不换行}System.out.println( );// 纯换行}/*** ** *** **** ***** ****** *******/for(int i = 1;i < 7;i++) {for(int j = 1;j <= i;j++) {System.out.print("*");}System.out.println( );}}
五、总结
今日重点
- if和if-else
- while和for循环