◆格式:
switch(表达式){
case 值1:
语句体1;
break;
default:
语句体n+1;
break;
}
◆switch中break的作用
用于结束整个switch语句的执行
◆switch中default的执行时机
当表达式的值,和case给出的值,都没有匹配成功,将会执行default
◆switch括号中的表达式可以接收的类型
byte,short,int,char,jdk5开始可以接收枚举,jdk7开始可以接收String
◆switch中省略了break的现象
如果switch匹配到了对应的case,但是当前case中没有遇到break,这时候代码会不再进行其他的case匹 配,继续向下执行,一直到switch所有语句执行完毕,或者中途遇到了break,才会结束,这种现象,我
们称之为case穿透。
/*
运用switch语句编写不同季节对应的月份
1、2、12月份输出 冬季
3、4、5月份输出 春季
6、7、8月份输出 夏季
9、10、11月份输出 秋季
*/
import java.util.Scanner; //导包
public class SwitchDemo{
public static void main(String[] args){
System.out.println("开始");
Scanner sc = new Scanner(System.in); //创建Scanner对象
System.out.println("请输入一个月份(1-12)");
int month = sc.nextInt();
switch(month){
case 1:
case 2:
case 12:
System.out.println("冬季"); //输入1、2、12会输入冬季
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("你输入的月份有误");
}
System.out.println("结束");
}
}
控制台输出:
请你输入一个的月份(1-12)
12
冬季
格式 : for(初始化语句; 条件判断语句; 条件控制语句){
循环体语句;
}
初始化语句:对控制循环的变量进行初始化
条件判断语句:控制循环体是否要执行的判断条件
循环体语句:循环中要做的事情
条件控制语句:对控制循环的变量进行改变,也就是控制循环的进度
①. 执行初始化语句,该语句只会执行一次
②. 执行条件判断语句,例如 i <= 5,看其返回结果是true还是false,如果为false,结束循环,如果为true, 则执行循环体语句
③. 当条件为true的时候,执行循环体语句
④. 执行条件控制语句,改变控制循环的变量,例如i++; 随后继续执行条件判断语句,以此类推
◆使用for循环输出1-5
◆使用for循环输出5-1
案例:
定义for循环,初始化变量i为1,循环判断条件为 i <= 5,循环体内部打印变量i,随后i++;
定义for循环,初始化变量i为5,循环判断条件为 5 >= 1,循环体内部打印变量i,随后i--;
public class ForTest01{
public static void main(String[] args){
for(int a=1; a<=5; a++){
System.out.print(a+"\t");
}
System.out.println();
for(int b=5; b>=1; b--){
System.out.print(b+"\t");
}
}
}
控制台输出:
1 2 3 4 5
5 4 3 2 1
◆定义求和变量sum,准备用于数据的累加
◆使用for循环,控制数据从1开始增长到5
◆循环的过程中,使用数据跟sum累加即可
案例:
public class ForTest01{
public static void main(String[] args){
int num = 0;
for(int a=1; a<=5; a++){
num += a;
}
System.out.println(num)
}
}
控制台输出:
15
◆定义求和变量sum,准备用于数据的累加
◆使用for循环,控制数据从1开始增长到100
◆循环的过程中,使用if语句判断当前数值是否是奇数
◆如果是偶数,跟sum变量累加即可
案例:①求1-100的数字之和
public class ForTest02{
public static void main(String[] args){
int num = 0;
for(int a=100; a>=1; a--){
if(a % 2 !=0){
num += a
}
}
System.out.println("1-100奇数的和:"+num);
}
}
控制台输出:
2500
案列:②
1、什么是水仙花数?想找出水仙花数,循环该怎么设计?
水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数,例如153
3*3*3 + 5*5*5 + 1*1*1 = 153
从三位数中筛选,就要找出所有的三位数,所以循环该从最小的三位数100开始,循环到最大的三位数999
2、怎样获取一个三位数的个位,十位,百位?
将循环中获取到的每一个数值,使用num变量记录
num % 10 得到个位
num / 10 % 10 得到十位
num / 10 / 10 % 10 得到百位
3.统计个数 定义一个变量s=0;利用for循环if判断如果是水仙花则s++,最后输出s即可
public class ForTest04{
public static void main(String[] args){
int s = 0;
for(int i=100; i<1000; i++){
int ge = i % 10;
int bai = i / 100;
int shi = i / 10 % 10;
int num = ge*ge*ge + shi*shi*shi + bai*bai*bai;
if(num == i){
System.out.println(i);
s++;
}
}
System.out.println("100到1000之间的水仙花数一共有:" + s +"个");
}
}
控制台输出:
153
370
371
407
100到1000之间的水仙花数一共有:4个
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
1. 执行初始化语句(程序从上到下执行,也必须先执行这一句)
2. 执行条件判断语句,看其结果是true还是false,false的话结束循环,true的话则向下继续执行
3. 循环条件满足,执行循环体语句(循环真正做的事情)
4. 执行条件控制语句
5. 继续执行条件判断语句,看其返回结果是true,还是false…以此类推
案例①
用while语句打印5次HelloWorld
思路:
编写初始化语句int i= 1;
定义while循环格式,条件判断语句 i <=5; 循环体语句打印HelloWorld
循环体语句下面,编写条件控制语句i++;
public class WhileDemo{
public static void main(String[] args){
int a = 1;
while(a<=5){
System.out.print("HelloWorld");
}
}
}
控制台输出:
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
案例②
动动手,使用while循环计算出0.1毫米的纸,折多少次可以折成珠穆朗玛峰的高度(8844.43米)
思路:
◆定义计数器变量,准备用于统计次数
◆定义纸张的厚度,和珠穆朗玛峰的高度,注意单位换算
◆编写while循环的判断条件,当纸张厚度小于等于珠穆朗玛峰的高度,说明循环可以继续,循环内部纸张*=2
◆循环中每一次折完,计数器增长一次,循环结束后打印计数器
public class WhileTest01{
public static void main(String[] args){
double paper = 0.1;
int count = 0;
int zf = 8844430;
while(paper <= zf){
paper *= 2;
count++;
}
System.out.println("折叠次数:" + count);
}
}
控制台输出:
折叠次数:27
do {
循环体语句;
条件控制语句;
} while(条件判断语句);
按照顺序,程序从上到下依次执行,do…while循环会先执行循环体语句,随后再执行条件判断语句,由此得出结论, do…while循环,无论条件是否满足,都至少执行一次循环体。
1、for循环和while循环,是先判断后执行。
2、do…while循环是先执行后判断
3、for循环和while循环的区别
for循环内部定义的变量,在循环之后就会从内存中释放掉,再想使用就找不到了,而while控制循环的变量是定义 在循环外部,循环结束后可以继续使用。(也可以将for循环的初始化语句定义在循环外部)
4、死循环的三种书写格式是?哪一种最常用?
格式:for(;{} while(true){} do{}while(true);
常用:while(true){}
1、break的应用范围
break可用于switch语句中,也可以用于循环语句,三种循环都可以
break用于打破循环,如果执行了break这个循环就就停止结束
2、continue的应用范围
continue只能应用在循环中!并且continue用来结束本次循环,然后接着执行后续循环
案例
需求:控制台输出1-5,打印的过程中,不要2的倍数
运行结果(一行打印,中间有空格分割):1 3 5
思路:
定义for循环,循环从1开始,循环到10
循环中使用if判断,当前的数%3==0吗?如果满足条件,是3的倍数,continue跳过即可
如果不是3的倍数,使用System.out.print()打印数据,并拼接空格字符串
public class ContinueTest01{
public static void main(String[] args){
for(int i = 1; i<=5; i++){
if(i%2 == 0){
continue;
}
System.out.print(i + "\t");
}
}
}
控制台输出:
1 3 5
public class ContinueTest01{
public static void main(String[] args){
for(int i = 1; i<=5; i++){
if(i%2 == 0){
break;
}
System.out.print(i + "\t");
}
}
}
控制台输出:
1
案例代码:
public class ForFor{
public static void main(String[] args){
for(int hour=0; hour <24; hour++){
for(int minute=0; minute<60; minute++){
System.out.println(hour + "时" + minute + "分");
}
System.out.println("--------");
}
}
}
循环嵌套的执行步骤
外循环执行一次,内循环执行一圈
简单理解:整个内循环,就是外循环所控制的循环体,循环体没有执行完,是不会开始下一次循环的。
(红色部分为内循环)
A. 导入包 import java.util.Random;
B. 创建对象 Random r = new Random();
C. 获取随机数 r.nextInt(10); // 10是举例,不是固定写法
如果nextInt方法中传入的是20,则产生的随机数是多少产生的是0-19,如果想要产生1-20的随机数,需要手动修改
int num = r.nextInt(20) + 1;
案例
用Random随机生成2个30-50之间的数(包括30和50)
import java.util.Random;
public class RandomTest{
public static void main(String[] args){
Random r = new Random();
for(int i = 1; i<=2; i++){
int count = r.nextInt(21) + 30;
System.out.println("第" + i + "个随机数是:" + count);
}
System.out.println("------");
}
}
控制台输出:
第1个随机数是:34
第2个随机数是:46
(结果是随机的)
案例
需求:程序开始随机产生1-100之间的随机数,随后使用键盘录入的数值和产生的随机数进行比对,如果没猜中, 给出提示大了或笑了,猜中了提示恭喜
思路:
◆创建Random对象,并产生一个1-100之间的随机数
◆使用Scanner,键盘录入一个整数,使用if语句,跟产生的随机数进行比较,并给出相应的提示
◆使用无限循环将(键盘录入并比对)的代码包裹,猜中了之后,break结束循环
import java.util.Random;
import java.util.Scanner;
public class Guess{
public static void main(String[] args){
Random r = new Random();
int x = r.nextInt(100)+1;
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输入你猜的数据:");
int y = sc.nextInt();
if(y > x){
System.out.println("你猜的数字大了");
}else if(y < x){
System.out.println("你猜的数字小了");
}else{
System.out.println("恭喜你猜对了!");
break;
}
}
}
}