目录
swith 语句格式说明
格式
练习1:
运行即可发现, 如果变量noodles 不同那结果也会不同. 如果变量noodles 不存在,运行结果将是"方便面"
练习2:
代码运行:
import java.util.Scanner;
public class Test9 {
public static void main(String[] args) {
//运动计划
Scanner sc = new Scanner(System.in);
System.out.println("请录入星期");
int week = sc.nextInt();
//利用switch对星期进行匹配
switch (week){
case 1:
System.out.println("跑步");
break;
case 2:
System.out.println("游泳");
break;
case 4:
System.out.println("慢走");
break;
case 5:
System.out.println("动感单车");
break;
case 6:
System.out.println("拳击");
break;
case 7:
System.out.println("爬山");
break;
default:
System.out.println("没有这个星期");
break;
}
}
}
default 的位置和省略
位置: default 不一定是写在下面的,我们可以写在任意位置,只不过习惯写在最小面
省略: default 可以省略,语法不会有问题,但是不建议省略.
case 穿透
就是语句体 中没有写break 导致
.执行流程:
- 首先还是会拿着小括号中表达式的值跟最下面每一个case进行匹配.
- 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么将结束整个swith 语句
- 如果没有发现break, 那么程序会继续执行下一个case 语句体,一直到break或者右大括号为止
使用场景: 如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码.
举一反一
switch 新特性
JDK12 及后面的才可以使用
如果只有运行代码, 大括号可以删除,如下
switch 和 if 第三种格式各自的使用场景
if 第三种格式 : 一般用于对范围的判断
swith第三种格式 : 把有限个数据一一列举出来,让我们任选其一
练习1 :
以上的swith语句还可以像下面这种写法
练习2 :
循环
循环的分类 : for whlie do...whlie
练习1: 求和
- 求和的变量不能定义在循环的里面, 因为变量只在所属的大括号中有效
- 如果我们把变量定义在循环里面,那么当前变量只能在本次循环中有效
- 当本次循环结束之后,变量就会从内存中消失
- 第二次循环开始的时候,又会重新定义一个新的变量
- 结论:如果以后我们要写累加求和的变量,可以把变量定义在循环的外面
练习2: 求和
public class Test15 {
public static void main(String[] args) {
//求1~100之间的每个数
//分析:
//1. 获取1~100之间的每个数
int sum = 0;
for (int i = 1; i <= 100; i++) {
//2. 累积求和 (先判断,再求和)
if (i % 2 == 0){
sum = sum + i;
}
}
//打印sum
System.out.println(sum);
}
}
练习3 :
统计满足条件的数字
import java.util.Scanner;
public class Test16 {
public static void main(String[] args) {
//分析:
//1,键盘录入两个数字
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个数字表示范围的开始");
int start = sc.nextInt();
System.out.println("请录入一个数字表示范围的结束");
int end = sc.nextInt();
//统计变量
//简单理解:统计符合要求的数字的个数
int count =0;
//2.利用循环获取这个范围中的每个数字
//开始条件 start
//结束条件 end
for (int i = start; i <= end; i++) {
//3. 对每一个数字进行判断,统计有多少个满足要求的数字
if (i % 3 == 0 && i % 5 ==0 ){
count++;
}
}
System.out.println(count);
}
}
while 循环的执行流程
初始化语句只执行一次
判断语句为true ,循环继续
判断语句为false ,循环结束
练习1:
利用while循环打印1~100
public class ForDemo1 {
public static void main(String[] args) {
//whlie 循环打印1~100
//分析
//开始条件
//结束条件
int i= 1;
while (i<=100){
System.out.println(i);
i++;
}
}
}
~~~~~
for 和 whlie 的对比
练习1:
分析:
折叠纸张的厚度都是原先的两倍
循环折叠纸张,只要纸张的厚度小于山峰的高度,那么循环就继续 每折叠一次,统计次数就要++ 选择whlie 的理由: 因为我们不知道循环的次数也不知道循环的范围只知道循环的条件,所以用whlie
public class Test17 {
public static void main(String[] args) {
//分析:折叠纸张的厚度都是原先的两倍
//定义一个变量来记录山峰高度
double height = 8844430;
//定义一个变量来记录纸张初始厚度
double paper = 0.1;
//定义一个变量用来统计折叠次数
int count = 0;
//循环折叠纸张,只要纸张的厚度小于山峰的高度,那么循环就继续
//每折叠一次,统计次数就要++
//选择whlie 的理由: 因为我们不知道循环的次数也不知道循环的范围只知道循环的条件,所以用whlie
while (paper < height){
paper = paper * 2;
//折叠一次,++一次
count ++ ;
}
//当循环结束后,count 记录的值就是折叠的次数
System.out.println(count);
}
}
练习2 :
核心思路:把数字倒过来跟原来的数字进行比较
public class Test18 {
public static void main(String[] args) {
//核心思路:把数字倒过来跟原来的数字进行比较
//1, 定义数字
int x = 12345;
//定义一个临时变量用于记录x原来的值,用于最后进行比较
int temp = x;
//记录倒过来之后的结果
int num = 0;
//2. 利用循环开始
while (x != 0){
//从右往左获取每一位数字
int ge = x % 10;
//修改一下x记录的值(由上句代码可知需要修改代码的值)
x = x /10;
//把当前的获取到的数字拼接到最右边
num = num * 10 + ge;
}
//打印
System.out.println(num);
System.out.println(x);
//比较
System.out.println(num == temp);
}
}
练习3:
public class Test19 {
public static void main(String[] args) {
//分析
// 被除数 / 除数 = 商.....余数
//定义变量记录被除数
int dividend = 100;
//定义变量记录除数
int divisor = 37;
//定义一个变量用来统计相减了多少次
int count = 0;
//3. 在循环中,不断的用被除数 - 除数
//只要被除数 是大于除数的, 那么就一直循环
while (dividend >= divisor){
dividend = dividend-divisor;
count ++;
}
//当循环结束之后,dividend变量记录的就是余数
System.out.println("余数为" + dividend);
//当循环结束之后,count 就是商
System.out.println("商为"+ count);
}
}
do...while 循环
先执行后判断