目录
一.顺序结构
顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
public static void main(String[] args) {
System.out.println("日照香炉生紫烟");
System.out.println("遥看瀑布挂前川");
System.out.println("飞流直下三千尺");
System.out.println("疑是银河落九天");
}
运算结果:
二.分支结构
1. if语句
1.1 if语句的三种格式:
if(关系表达式){ 语句体; }
执行流程:(1)首先计算关系表达式的值 ;(2)如果关系表达式的值为true就执行语句体 ;(3)如果关系表达式的值为fasle就不执行语句体;(4)继续执行后面的其他语句
注意事项:
public static void main(String[] args) { //1.大括号的开头可以另起一行书写,但建议写在第一行末尾 //2.在语句体中,如果只有一句代码,大括号可以省略不写 //3.如果对一个布尔类型的变量进行判断,不要用==,直接把变量写在小括号即可 int number = 20; if(number > 10) { int a = 100; //1.定义变量a 2.给变量a赋值100 (不是一次操作) System.out.println( "number 大于 10"); } boolean flag = false; if (flag) { System.out.println("flag值为false"); } }
if(关系表达式){ 语句体1; ]else{ 语句体2 }
- 执行流程:1)首先计算关系表达式的值 ;(2)如果关系表达式的值为true就执行语句体1 ;(3)如果关系表达式的值为fasle就执行语句体2;(4)继续执行后面的其他语句
if(关系表达式1){ 语句体1; }else if(关系表达式2){ 语句体2; } ... else{ 语句体 n + 1; }
- 执行流程:1)首先计算关系表达式1的值 ;(2)如果关系表达式的值为true就执行语句体1 ;如果关系表达式的值为fasle就计算关系表达式2;(3)如果关系表达式的值为true就执行语句体2 ;如果关系表达式的值为fasle就计算关系表达式3;(4)......; (5)如果所有的关系表达式结果都为false,就执行语句体n+1;
2. switch语句
switch(表达式){ //case后面的值只能是字面量,不能是变量 //case输出的值不允许重复 //break不可以省略,省略会导致case穿透 // case穿透 -->程序会一直执行直到遇到break或大括号为止; case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; //default位置任意,习惯性写在switch语句最后 //default可以省略,语法没有问题,但是不建议省略 }
- 执行流程:(1)首先计算表达式的值;(2)依次和case后面的值就行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束;(3)如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句;
- switch语句后()中表达式可以是:int、short、byte、枚举类型、string字符串。
2.1 if的第三种格式与switch语句使用场景区别:
格式 | 内容 |
if的第三种格式 | 一般用于对应范围的判断 |
switch语句 | 把有限个数据一一列举出来,让我们任选其一 |
三.循环结构
1. for循环
- 格式:
for(初始化语句 ; 条件判断语句 ; 条件控制语句 ){ 循环体语句 } //核心: //初始化语句只执行一次 //判断语句为true ,循环继续 //判断语句为false, 循环解释
- 执行流程:(1) 执行初始化语句; (2)执行条件判断语句,看其结果是true还是false:①如果是false,循环结束; ② 如果是true ,执行循环体语句; (三)执行条件控制语句; (4) 回到(2)继续执行条件判断语句;
2. while循环
格式:
初始化语句 ; while(条件判断语句){ 循环体语句; 条件控制语句 ; } //初始化语句只执行一次 //判断语句为true,循环继续 //判断语句为false,循环结束
2.1 for循环和while循环的对比:
相同点 | 不同点 |
运行规则都是一样的 |
|
//for循环
int i = 0;
for(; i < 4; i ++){
System.out.println(i);
}
//for循环:知道循环次数 或者 循环范围
//while循环
int i = 0;
while(i < 4){
i++;
}
System.out.println(i);
// while循环:不知道循环的次数和范围,只知道循环的结束条件
3. do..while循环
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
//先执行后判断
4. 无限循环语句
概念:使程序循环一直停不下来
类别:
//循环 -> 条件语句 //for循环 for(; ;){ System.out.println(""); } //while循环 while(true){ System.out.println(""); } //do..while循环 do{ System.out.println(""); }while(true);
5. 跳转控制语句
- continue: 跳出本次循环 ,继续执行下次循环
public static void main(String[] args) { //1.跳出某一次循环 for (int i = 1; i < 5; i++) { //结束本次循环,继续下次循环 continue; } System.out.println(""); }
break:结束整个循环
public static void main(String[] args) { // 1.结束整个循环 for (int i = 1; i < 5; i++) { if (i == 3) { // 结束整个循环 break; } } System.out.println(""); }
四、循环高级综合练习
4.1 案例1:逢7过
朋友聚会的时候可能会玩一个游戏:逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
public static void main(String[] args) {
//1.得到1~100之间的每一个数字
for(int i = 1;i< 100 ; i++) {
//判断每一个数字
//如果符合规则,被打印出来
//如果不符合规则就打印真是的数字
if(i % 10 == 7 || i /10 % 10 ==7 || i % 7 == 0) {
System.out.println("过");
continue;
}
System.out.println(i);
}
4.2 案例2 :求平方根
需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根。
结果只保留整数部分 ,小数部分将被舍去。
public static void main(String[] args) {
//在代码中:
//从1开始循环,拿着数字的平方根跟原来的数字进行比较
//如果小于的,那么继续往后判断
//如果相等,那么当前数字就是平方根
//如果大于的,那么前一个数字就是平方根的整数部分
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数:");
int number = sc.nextInt();
for(int i = 1;i <= number ; i++) {
if( i * i == number) {
System.out.println(i +"就是"+number+"的平方根");
break;
}else if (i * i >number) {
System.err.println( (i - 1) + "就是" + number + "平方根的整数部分");
break;
}
}
运行结果:
4.3 案例3:求质数
需求:键盘录入一个正整数x,判断该整数是否为一个质数。
public static void main(String[] args) {
// 质数:如果一个质数只能被1和其本身整除,那么这个数就是质数
// 定义一个变量,表示标记
// 标记number是否为一个质数
boolean flag = true;
// 1.分析:
// 键盘录入一个正整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int number = sc.nextInt();
// 2.判断
// 写一个循环,从2开始判断,一直判断到number - 1为止
// 看这个范围内,有没有数字可以被number整除
for (int i = 2; i < number; i++) {
if (number % i == 0) {
flag = false;
// System.out.println(number + "不是一个质数");
break;
}
// else {
// System.out.println(number +"是一个质数");
// } // 9 % 2 = 1 跳出循环但是 9 不是质数
}
if (flag) {
System.out.println(number + "是一个质数");
} else {
System.out.println(number + "不是一个质数");
}
// 只有当这个循环结束了,表明这个范围之内的所有数字都判断完毕了
// 此时才能判断number为一个质数
}
运算结果:
4.4 案例4:猜数字小游戏
需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
知识扩展:获取随机数 -> Java帮我们写好了一个类叫Random,这个类就可以生成一个随机数。
- ①导包: Random这个类在哪
import java.util.Random //导包的动作必须出现在类定义的上边
- ②创建对象:表示我要开始使用Random这个类了
Random r = new Random(); //上面这个格式里面,只有r是变量名,可以变,其他都不允许改变
③生成随机数:真正开始干活了
int number = r.nextInt(随机数的范围); //上边这个格式里面,只有number是变量名,可以变,其他都不允许改变
public static void main(String[] args) {
Random r = new Random();
int number = r.nextInt(100) + 1; // 1~100
System.out.println(number);
// 秘诀:
// 用来生成任意数到任意数的随机数
// 1.让这个范围头尾都减去1,让这个范围从0开始
// 2.尾巴+1
// 最后的结果,再加上第一步减去的值
/*
* Random r= new Random();
* int number = r.nextInt(9) + 7; //7~15
* System.out.println(number);
*/
}