switch语句
- 格式
switch(表达式){
case值1:
语句体1;
break;
case值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式说明
- 表达式:(将要匹配的值)取值为byte,short,int,char,jdk5以后的可以使枚举,jdk7以后可以使String.
- case:后面跟的是要和表达式进行比较的值(被比较的值)
- break:表示中断,结束的意思
- default表示所有情况都不匹配时,就执行该内容
流程
- 计算表达式的值
- 一次和case后面的值进行比较,匹配就执行,遇到break结束
- 如果都不匹配,就执行default,然后结束
switch(week)
case 1 :
语句体
break;
注意事项
- case的值不允许重复
- case后面只能是常量
案例
import java.util.Scanner;
public class Week{
public static void main(String[] args){
//创建对象
Scanner sc = new Scanner(System.in);
//控制台提示语
System.out.println("用户请输入星期数(如果是星期一就输入:1):");
//调用对象,接收数据
int week = sc.nextInt();
//判断语句
switch(week){
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;
}
}
}
case穿透现象
case省略break,则穿透(继续执行下一条语句),(不匹配)直到看到break结束.
case 1:
case 2:
case 3:
case 4:
语句体;
break;
//全部省略直接执行语句体
循环语句
for循环
具有开始和结束标志
格式
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程
- 执行初始化语句
- 执行条件判断语句,看结果是true还是false,;false循环结束,true继续执行;
- 执行循环体语句
- 执行条件控制语句
- 回到第二步
案例1
输出1-5和5-1
public class Text01 {
public static void main(String[] args){
int a = 0;
int b = 6;
for(int i = 1;i <= 5; i++){
a++;
System.out.print(a);
}
System.out.println(" ");
System.out.println("---------------------------------");
for(int i = 1;i <= 5; i++){
b--;
System.out.print(b);
}
}
}
案例2
求1-5的数据和
public class Text02 {
public static void main(String[] args){
int a = 0;
for(int i = 1;i <= 5; i++){
a += i;
}
System.out.print(a);
}
}
案例3
求1-100的偶数和
public class Text03 {
public static void main(String[] args){
int a = 0;
for(int i = 1;i <= 100; i++){
if(i % 2 == 0){
a += i;
}
}
System.out.print(a);
}
}
案例4
水仙花数
public class Text04 {
public static void main(String[] args){
for(int i = 100;i <= 999; i++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
int temp = (ge * ge * ge) + (shi * shi * shi) + (bai * bai *bai);
if(temp == i){
System.out.println(i);
}
}
}
}
案例5
水仙花数(每行打印两个)
public class Text04 {
public static void main(String[] args){
for(int i = 100;i <= 999; i++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
int temp = (ge * ge * ge) + (shi * shi * shi) + (bai * bai *bai);
if(temp == i){
System.out.println(i);
}
}
}
}
while循环
格式
while(条件判断语句){
循环体语句;
}
完整格式
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程
- 执行初始化语句
- 执行条件判断语句(false结束,true继续执行)
- 执行循环体语句
- 执行条件控制语句
- 回到第二步
案例
珠峰高8844.43米,8844430毫米,一张纸厚度为0.1毫米,需要折叠几次可以达到珠峰的高度
public class ZhuFen {
public static void main(String[] args){
//定义,纸张厚度计数
double paper = 0.1;
int count = 0;
while(paper <= 8844430){
paper *= 2;
count++;
}
System.out.println("一张纸需要折叠" + count + "次可达到珠峰厚度");
}
}
do…while语句
格式
do{
循环体语句;
}while(条件判断语句)
完整格式
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句)
执行流程
- 执行初始化语句
- 执行循环体语句
- 执行条件控制语句
- 执行条件判断语句
- 回到第二步
三中循环区别
- for循环和while循环先判断是否成立,然后决定是否执行(先判断后执行)
- do…while循环先执行后判断是否成立(先执行后判断)
for循环和while循环的区别
- for循环,条件语句所控制的自增变量在接收循环后不能被再次访问
- while循环的变量在结束后还可以被继续使用
三种循环的场景
- 明确循环次数,推荐使用for循环
- 不明确循环次数,建议使用while循环
- do…while循环,很少使用
死循环
for循环
for(;;)
while循环
while(true)
do…while
do{
}while(true)
跳转控制语句
跳过语句 continue
if(i == 4){
contiue;
}
中断语句break
if(i == 60){
break;
}
案例
程序运行后和多次查看减肥计划,直到输入0 程序结束
import java.util.Scanner;
public class JianFei{
public static void main(String[] args){
//循环嵌套
lo: while(true){
//控制台提示语
System.out.println("用户请输入星期数(如果是星期一就输入:1,无需查看则输入:0):");
//创建对象
Scanner sc = new Scanner(System.in);
//调用对象,接收数据
int week = sc.nextInt();
//判断语句
switch(week){
case 0 :
break lo;
case 1 :
System.out.println("-------------------------------------------------");
System.out.println("跑步");
break;
case 2 :
System.out.println("-------------------------------------------------");
System.out.println("游泳");
break;
case 3 :
System.out.println("-------------------------------------------------");
System.out.println("慢走");
break;
case 4 :
System.out.println("-------------------------------------------------");
System.out.println("动感单车");
break;
case 5 :
System.out.println("-------------------------------------------------");
System.out.println("拳击");
break;
case 6 :
System.out.println("-------------------------------------------------");
System.out.println("爬山");
break;
case 7 :
System.out.println("-------------------------------------------------");
System.out.println("好好吃一顿");
break;
default :
System.out.println("-------------------------------------------------");
System.out.println("您的输入有误");
break;
}
}
}
}
random(产生随机数)
作用:
用于产生一个随机数
使用步骤:
- 导包
import java.util.Random;
- 创建对象
Random r = new Random();
- 获取随机数
int number = r.nextInt(10);//获取数据的范围:[0,10),包括0 不包括10
案例
猜数字
import java.util.Scanner;//导包
import java.util.Random;//导包
public class CaiShuZi{
public static void main(String[] args){
//创建对象
Random r = new Random();
Scanner sc = new Scanner(System.in);
//获取随机数
int num = r.nextInt(100) + 1;
//循环嵌套
lo:while(true){
System.out.println("请您输入您猜的数字(1-100)(提前退出请输入0)");
//获取用户输入的数据
int number = sc.nextInt();
//判断用户输入的数据
if(number == num){
System.out.println("恭喜您猜中数字!");
break lo;
}
if(number > num){
System.out.println("很遗憾,您输入的数字大了");
System.out.println("--------------------------------------------");
}else if(number < num && number != 0){
System.out.println("很遗憾,您输入的数字小了");
System.out.println("--------------------------------------------");
}else if(number == 0){
break lo;
}
}
}
}