1.选择
前言:什么是选择呢?在我们的人生中处处面临着选择,比如说在学校你可以选择玩,摆烂,当然也可以选择努力写代码,刷题。什么样的选择就会面临什么样的结果。
其实程序和人生一样:顺序中夹杂着循环,伴随一次次选择不断成长
2.分支结构
1.语法格式1
if(布尔表达式){
// 语句
}
如果布尔表达式结构为true,执行if中的语句,否则不执行。
注意:
括号中一定要为布尔表达式,否则程序会报错,不能像c语言中的那种写法if(!a)。
比如:小明,如果这次考试考到90分或以上,给你奖励一个鸡腿。
int score = 92;
if(score >= 90){System.out.println("吃个大鸡腿!!!");
}
2.语法格式2
if(布尔表达式){// 语句1
}else{// 语句2
}
如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。
比如:小明,如果这次考到90分以上,给你奖励一个大鸡腿,否则奖你一个大嘴巴子。
int score = 92;
if(score >= 90){System.out.println("吃个大鸡腿!!!");
}else{System.out.println("挨大嘴巴子!!!");
}
3.语法格式3
if(布尔表达式1){// 语句1
}else if(布尔表达式2){// 语句2
}else{// 语句3
}
表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3
这是多分支,第一个是单分支
3.switch语句
基本语法
switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
default:{
内容都不满足时执行语句;
[break;]
}
}
执行流程:
1. 先计算表达式的值
2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
3. 当表达式的值没有与所列项匹配时,执行default
注意事项:
多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int
引用类型:String常量串、枚举类型
其实java里面的switch的功能是非常强大的,它可以识别字符串
注意:
不能作为switch参数的数据类型有:float,double,boolean,long
switch与if的区别
看着switch和 if 好像没有都一样,他们肯定是有区别的。
最本质的区别就是,switch的参数不能是一个很复杂的表达式,像这样
他肯定是会报错的,switch语句做不到。
分号问题
这个代码是一定会打印“hehe”的。
因为:此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。
4.循环结构
while循环
基本语法格式:
while(循环条件){循环语句;
}
循环条件为true,则执行循环语句;否则结束循环
java的while语句百分之九十九和c语言一样,百分之一不一样,就是括号里面必须为布尔表达式。
一些小练习
要求打印一到十的数字
public static void main(String[] args) {int i = 1;while(i<=10){System.out.print(i+" ");i++;}}
计算 1 到 100 的和
public static void main(String[] args) {int i = 1;int sum = 0 ;while(i<=100){sum+=i;i++;}System.out.println(sum);}
计算5的阶乘
public static void main(String[] args) {int i = 1;int sum = 1;while (i<=5){sum*=i;i++;}System.out.println(sum);
}
【注意事项】:
1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行
给大家带来一个失败的案例
原因:此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码死循环了。
for循环
【基本语法】
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
- 表达式1:初始化值,在循环最开始的时候执行,而且只能执行一次。
- 表达式2:判断条件,如果满足条件就执行循环,不满足循环就结束循环。
- 表达式3: 循环条件的更新方式
【执行过程】
【循环的使用方法】
打印1到10的数字
public static void main(String[] args) {for (int i = 1; i <= 10 ; i++) {System.out.print(i+" ");}
}
计算1到100的和
public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100 ; i++) {sum+=i;}System.out.println(sum);
}
运行结果5050
【注意事项】(和while循环类似)
1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
4. 和while循环一样,结束单趟循环用continue,结束整个循环用break
给大家带来一个有趣的猜数字小游戏
public static void main(String[] args) {Random random = new Random(); // 默认随机种子是系统时间Scanner sc = new Scanner(System.in);int toGuess = random.nextInt(100);while (true) { //如果没有猜对就会一直去循环System.out.println("请输入要输入的数字: (1-100)");int num = sc.nextInt();if (num < toGuess) {System.out.println("低了");} else if (num > toGuess) {System.out.println("高了");} else {System.out.println("猜对了");break; //猜对了就结束循环}} sc.close();}
解析:这个程序的核心代码就是生成一个随机数,那么他是怎么实现的呢?
Scanner sc = new Scanner(System.in); //实例化一个随机数
int toGuess = random.nextInt(100); //生成一个100以内的随机数,并保存