HM Day 03
5-31
switch语句
格式:
数据类型 n = 值;
//对n的取值进行匹配,哪个case值匹配,就执行下面的语句体,遇到break结束。
//n的数据类型,只能是byte short int char 字符串(String)和枚举这几种数据类型
switch(n){
case 值1:
语句体;
break;
case 值2:
语句体;
break;
...
default:
语句体;
break;
}
switch案例
public class Demo{
public static void main(String[] args){
int week = 8;
//对week进行匹配
switch(week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("你输入有误");
break;
}
}
}
swtich语句的注意事项:
1.switch语句匹配的数据,数据类型只能是固定的几种
byte short int char
JDK5之后可以有枚举(没学)
JDK7之后可以是字符串(String)
2.case后面的值,不能重复,只能是常量不能是变量
switch 穿透现象:如果case下面没有写break语句,就会穿透到下一个case继续执行,直到遇到break才结束。
public class Demo{
public static void main(String[] args){
//键盘录入一个整数,表示星期几
Scanner sc = new Scanner(System.in);
System.out.println("请输入今天星期几:");
int week = sc.nextInt();
//对week进行匹配
switch(week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("你输入有误");
break;
}
}
}
for循环语句
格式:
水仙花数问题
/*
分析思路:
1)遍历所有的三位数(100~999)
2)获取每一个三位数的个位、十位、和百位
3)判断这个三位数数是否满足水仙花数的规则
这个数 == 个位*个位*个位+十位*十位*十位+百位*百位*百位
4)把满足条件的三位数打印数出来
*/
//1)遍历所有的三位数
for(int i=100;i<=999;i++){
//2)获取每一个三位数的个位、十位、和百位
int ge=i%10;
int shi=i/10%10;
int bai=i/100%10;
//3)判断这个三位数数是否满足水仙花数的规则
if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
System.out.println(i);
}
}
while循环语句
折纸问题
package com.ithema.test;
/**
* @Package: com.ithema.test
* @ClassName: demo6
* @Author: PC
* @CreateTime: 2021/5/31 18:44
* @Description:
* 1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。
* 2.请问,折叠多少次,可以折成珠穆朗玛峰的高度。
*/
public class demo6 {
public static void main(String[] args) {
int couunt =0;
long Everest = 8844430L;
double paper = 0.1;
while(paper <= Everest){
paper = paper * 2;
couunt++;
System.out.println("折叠"+couunt+"次的高度为:"+paper+"毫米");//??????折叠27次的高度为:1.34217728E7毫米?????
}
System.out.println("超过珠穆朗玛峰的高度需要折叠"+couunt+"次");
/*
运行结果:
折叠1次的高度为:0.2毫米
折叠2次的高度为:0.4毫米
折叠3次的高度为:0.8毫米
折叠4次的高度为:1.6毫米
折叠5次的高度为:3.2毫米
折叠6次的高度为:6.4毫米
折叠7次的高度为:12.8毫米
折叠8次的高度为:25.6毫米
折叠9次的高度为:51.2毫米
折叠10次的高度为:102.4毫米
折叠11次的高度为:204.8毫米
折叠12次的高度为:409.6毫米
折叠13次的高度为:819.2毫米
折叠14次的高度为:1638.4毫米
折叠15次的高度为:3276.8毫米
折叠16次的高度为:6553.6毫米
折叠17次的高度为:13107.2毫米
折叠18次的高度为:26214.4毫米
折叠19次的高度为:52428.8毫米
折叠20次的高度为:104857.6毫米
折叠21次的高度为:209715.2毫米
折叠22次的高度为:419430.4毫米
折叠23次的高度为:838860.8毫米
折叠24次的高度为:1677721.6毫米
折叠25次的高度为:3355443.2毫米
折叠26次的高度为:6710886.4毫米
折叠27次的高度为:1.34217728E7毫米
超过珠穆朗玛峰的高度需要折叠27次
*/
}
}
dowhile语句
格式:
三种循环的区别
for、while与do...while的区别
for、while循环: 必须满足条件才执行
do...while: 不管条件是否成立,循环语句体至少执行一次。
for和while的区别
for循环:控制循环的变量,只能在循环里面使用
while循环:控制循环的变量,可以在循环外面使用
如何选择使用哪种循环
知道次数,选择使用for循环
不知道次数,选择使用while循环
死循环
循环条件一直为true的循环叫死循环(停不下来的循环)。
for(;;){
System.out.println("黑马程序员");
}
while(true){
System.out.println("黑马程序员");
}
do{
System.out.println("黑马程序员");
}while(true);
//注意:死循环后面的代码是执行不到的,除非死循环中有跳转语句
跳转语句
break的使用场景和作用?场景:switch语句和循环语句 作用:跳出switch和跳出循环continue的使用场景和作用?
场景:只能在循环语句中使用 作用:跳过本次循环,进入下一次循环
减肥计划
代码思路:
1)给减肥计划的代码,套一层while死循环
2)当case值是0时,使用break跳出循环
public class Demo{
public static void main(String[] args){
wc: while(true){
//键盘录入一个整数,表示星期几
Scanner sc = new Scanner(System.in);
System.out.println("请输入今天星期几:");
int week = sc.nextInt();
//对week进行匹配
switch(week){
case 0:
System.out.println("感谢使用,已退出");
break wc; //跳出带标签的语句
case 1:
System.out.println("跑步");
break;
case 2:
System.out.println("游泳");
break;
case 3:
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;
}
}
}
}
随机数Random
产生随机数的步骤
//1.在class的上面导包
import java.util.Random;
//2.在主方法中创建Random对象
Random r = new Random();
//3.指定范围生成随机数
int num = r.nextInt(10); //[0,10)
提问
//1.在class的上面导包
import java.util.Random;
public class Demo{
public static void main(String[] args){
//2.创建Random对象
Random r=new Random();
//3.生成指定范围的随机整数、
int num1=r.nextInt(10); //范围[0,9]
System.out.println(num1);
int num2=r.nextInt(11); //范围[0,10]
System.out.println(num2);
int num3=r.nextInt(10)+1; //[0,9]+1 -> [1,10]
System.out.println(num3);
int num4=r.nextInt(71)+50; //范围[50,120]-50 --> [0,70] +50
System.out.println(num4);
}
}
猜字小游戏
分析思路:
1.生成一个[1,100]范围内的随机数
2.键盘录入猜这个数字是多少
3.比较录入的整数和随机数的大小
如果比随机数大:输出猜大了
如果比随机数小:输出猜小了
如果和随机数相同:输出猜中了
import java.util.Scanner;
import java.util.Random;
public class test1Guess{
public static void main(String[]args){
/*
需求:猜数字
1-100内的数字,系统随机生成一个数字,用户键盘录入猜的数字,直到才对为止。
*/
System.out.println("~~~~~~猜字游戏~~~~~");
Scanner sc = new Scanner(System.in);
Random r = new Random();
int rd = r.nextInt(100)+1;
while(true){
System.out.println("你猜的数字是:");
int guess = sc.nextInt();
if(guess<rd){
System.out.println("你猜小了!");
}else if(guess>rd){
System.out.println("你猜大了!");
}else{
System.out.println("恭喜你,猜对了!");
break;
}
}
}
}
~~~~猜字游戏~~~~~");
Scanner sc = new Scanner(System.in);
Random r = new Random();
int rd = r.nextInt(100)+1;
while(true){
System.out.println("你猜的数字是:");
int guess = sc.nextInt();
if(guess<rd){
System.out.println("你猜小了!");
}else if(guess>rd){
System.out.println("你猜大了!");
}else{
System.out.println("恭喜你,猜对了!");
break;
}
}
}
}