目录
流程控制语句
顺序结构
从上至下,依次执行。
分支结构
if语句:
①
if(关系表达式){
语句体;
}//bool类型可直接作为判断条件。
②
if(关系表达式){
语句体1;
}else{
语句体2;
}
③
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break;
}
default的位置和省略:
default可以省略,语法不影响,但不建议省略;
default不一定要写在最下面,可以写在任意位置;
case穿透:
break一定不能省略;否则就会导致case穿透。没有break程序会持续执行case语句,直到出现break或者出现大括号才会停止。
使用场景:多个case语句体重复,考虑利用case穿透去简化代码。
- 练习
题目:键盘录入星期几,并输出工作日和休息日。
package com.itheima.test; import java.util.Scanner; public class test01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入星期数:"); int a = sc.nextInt(); switch (a){ case 1,2,3,4,5 -> System.out.println("工作日"); case 6,7 -> System.out.println("休息日"); default -> System.out.println("没有这个星期数"); } } }
switch新特性:jdk12及以上
switch书写可以利用箭头简化。如下图,case中只有一个语句其实也可以把括号省略。
package com.itheima.test; import java.util.Scanner; public class test01 { public static void main(String[] args) { int number = 1; switch (number){ case 1 ->{ System.out.println("一"); } case 2 ->{ System.out.println("二"); } case 3 ->{ System.out.println("三"); } default -> { System.out.println("没有这种选项"); } } } }
switch和if的第三种格式的各自使用场景
if的第三种格式:一般用于对范围的判断
switch:把有限个数据一一列举出来
循环结构
for循环
格式:for(int i=1;i<=10;i++){
语句体;
}
利用变量i的值控制循环次数。
- 练习
题目:求和,求1-5的和
public class test01 { public static void main(String[] args) { int i = 1; int sum =0; for(i=1;i<=5;i++){ sum=sum+i; } System.out.println("1-5的和为:"+sum); } }
while循环
格式:while(条件判断语句){
循环语句体;
条件控制语句;
}
//若条件判断语句为真,则进入循环体。若为假,则循环结束。
for与while的对比:知道循环次数或者循环范围->for循环;不知道循环次数或者循环范围,只知道循环的结束条件->while循环
- 练习:
题目:珠穆朗玛峰的高度(8844430mm),假如有一张足够大的纸,它的厚度是0.1mm,请问折叠多少次后,可以折成珠穆朗玛峰的高度?
public class test01 { public static void main(String[] args) { double i=0.1;//纸张的初始厚度 int count=0;//记录折纸的次数 while(i<=8844430){ i=i*2; count++; } System.out.println("需要折:"+count+"次"); } }
题目2:给一个整数x,如果x是回文整数打印true,反之,打印false。回文数:正着读和反着读一样。
package com.itheima.test; import java.util.Scanner; public class test01 { public static void main(String[] args) { // 给一个整数x,如果x是回文整数打印true,反之,打印false。回文数:正着读和反着读一样。 Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); int x= sc.nextInt(); //定义一个临时变量来存储这个数字 int temp = x; int num = 0; //判断是否是回文数,将数x从右往左的顺序打印出来,判断x与新打印的数字是否相同? while(x!=0){ int ge = x%10;//取该整数的个位; x = x/10;//把x的值修改一下; num =num *10+ge; } System.out.println(num==temp); } }
题目3:求商和余数
给定两个整数,被除数和除数(都是整数,且不超过int的范围)。将两数相除,要求不使用乘法、除法和%运算符来得到商和余数。
package com.itheima.test; import java.util.Scanner; public class test01 { public static void main(String[] args) { //给定两个整数,被除数和除数(都是整数,且不超过int的范围)。将两数相除,要求不使用乘法、除法和%运算符来得到商和余数。 //思路:循环减,被除数一直减除数,直到得到的数字比除数小。 Scanner sc = new Scanner(System.in); System.out.println("请输入被除数:"); int dividend = sc.nextInt(); System.out.println("请输入除数:"); int divisor = sc.nextInt(); int count = 0; while(dividend>=divisor){ dividend=dividend-divisor; count++; } //dividend记录的就是余数 System.out.println("商为:"+count); System.out.println("余数为:"+dividend); } }
do...while循环
格式:do{
循环体语句;
条件控制语句;
}while(条件判断语句);
//先走一次循环体语句,在进行条件判断,若判断为true那么执行循环体,否则,跳出循环。