Java Day 03
Switch语句
格式:
switch(){
case value1:
语句体1;
break;
case value2;
语句体2;
break;
case value3;
语句体3;
break;
...
default:
语句体n+1;
break
}
case后的值不能重复,且必须是常量。
case穿透
如果switch语句中,case省略了break,就会产生case穿透。
当开始case穿透时,后续的case就失去匹配效果,内部语句直接执行。(直到下一个break或将整个switch语句执行完毕。
for循环语句
格式:
for (初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
//例如:
int s = 0;
for (int i = 1 ; i < 10 ; i++){
s += i;
}
注意顺序:
1.初始化语句
2.条件判断语句:条件为true,继续执行。条件为false,循环结束
3.循环体语句
4.执行完循环体语句后!,执行条件控制语句。
5.返回2。
while循环语句
格式:
//基本格式:
while(条件判断语句){
循环体语句;
}
//完整格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行顺序:
1,初始化
2,条件判断,true→继续,false→循环结束。
3,循环体,
4,条件控制
5,返回2
do while循环(用得少)
格式:
//基本格式
do{
循环体语句;
}while(条件判断语句);
//完整格式
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
三种循环的对比
for和while会先判断条件是否成立,再决定是否执行循环体。
do..while会先执行一次循环体,再判断条件是否成立,是否继续执行。
在for循环中定义的变量,在循环结束后就会消失。
在while循环中条件控制语句所控制的自增变量,在while循环结束后,还可以继续使用。
因此:
-
明确循环次数的,使用for循环。
-
不明确循环次数的,使用while循环。
-
do...while就别用了
死循环
三种:
for(;;){}
while(true){}
do{}while(true);
其中while死循环最常用。
cmd中ctrl+C可以结束死循环
跳转控制语句
例1(continue):
public static void main(String[] args){
for(int i = 1; i<= 24; i++){
if(i == 4){
continue;
}
System.out.println(i + "层到了"); //循环体语句
}
}
效果:i=4时,跳过这一次的循环体语句的执行(line 6)。
例2(break):
public static void main(String[] args){
for(int i = 1; i<= 24; i++){
if(i == 10){
break;
}
System.out.println(i + "层到了"); //执行语句
}
}
效果:i=10时,结束整个循环。特别注意:i=10时不会执行循环语句,即,只会打印到"9层到了"。
注意:continue和break都只能跳过/跳出自己所在的那一层关系,如果要跳出/跳过指定层的循环,可以加入标号。如下:(具体见案例11)
标号名:while(true){
switch(表达式){
case 1:
break 标号名;
}
}
//效果:表达式为1时,该死循环结束
Random函数(掌握)
作用:产生一个随机数
使用步骤:导包、创建对象、获取随机数
import java.util.Random;//导包
Random r = new Random();//创建对象
int number = r.nextInt(10)
//获取随机数,nextInt函数内为参数,
//意义为在[0,10)区间内取值,不包括10!左闭右开!
案例
案例4:减肥计划(switch语句)
/*案例4:减肥计划
键盘录入星期数,显示今天的减肥活动。
1:跑步:
2:游泳
3:慢走
4:动感单车
5:拳击:
6:爬山
7:好好吃一顿。
*/
import java.util.Scanner;
public class case4{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入今天的星期数");
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;
default :
System.out.println("输入有误,请重新输入");
break;
}
}
}
案例5:输出数据(for循环)
输出1-5和5-1。
public class case5_1{
//输出1-5
public static void main(String[] args){
for(int i = 1;i <= 5; i++){
System.out.println(i);
}
}
}
public class case5_2{
//输出5-1
public static void main(String[] args){
for(int i = 5;i >= 1; i--){
System.out.println(i);
}
}
}
案例6:求和(for循环)
求1-5的和。
public class case6{
public static void main(String[] args){
int sum = 0 ;
for(int i = 1; i <= 5; i++){
sum += i;
}
System.out.println(sum);
}
}
案例7:1-100间偶数求和(for循环)
public class case7{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100 ; i++ ){
if(i % 2 == 0){
sum += i;
}
else{}
}
System.out.println("1-100间的偶数的和为" + sum);
}
}
案例8:求水仙花数(for)
水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数
public class case8{
public static void main(String[] args){
/*在控制台输出所有的水仙花数
水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数
*/
int a ; int b ; int c;//定义abc,分别用于存放百位、十位、个位。
for(int i = 100 ; i < 1000 ; i++){
a = i / 100; //百位
b = i / 10 % 10; //十位
c = i % 10; //个位
if(i == a*a*a+b*b*b+c*c*c){ //判断是否为水仙花数,是则输出这个数
System.out.println( i + "是一个水仙花数");
}
}
}
}
案例9:每行两个水仙花数(for)
public class case9{
public static void main(String[] args){
/*在控制台输出所有的水仙花数
水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数
*/
int a ; int b ; int c;//定义abc,分别用于存放百位、十位、个位。
int count = 0;
for(int i = 100 ; i < 1000 ; i++){
a = i / 100; //百位
b = i / 10 % 10; //十位
c = i % 10; //个位
if(i == a*a*a+b*b*b+c*c*c & count == 0){
//判断是否为水仙花数,是则输出这个数
System.out.print( i + "是一个水仙花数 ");
//如果计数为0,打印出水仙花数,并且计数+1
count++;
}else if(i == a*a*a+b*b*b+c*c*c & count == 1){
//如果计数为1,在同行打印,并且计数清零
System.out.println( i + "是一个水仙花数");
count = 0;
}
}
}
}
案例10:珠穆朗玛峰(while)
//珠峰是8844.43米,纸厚度是0.1毫米,折纸多少次可以折成珠峰的高度?
public class case10{
public static void main(String[] args){
double a = 8844430 ; //珠峰高度
double b = 0.1 ; //纸张厚度
int i = 0 ;
while(a > b){
b *= 2;
i++;
}
System.out.println("纸张需要折叠" + i + "次才能超过珠穆朗玛峰的高度");
}
}
案例11:减肥计划改进(死循环+break)
import java.util.Scanner; //导包
public class case11{
/*
目标:程序运行后可以多次查询减肥计划,直到输入0,程序结束
*/
public static void main(String[] args){
lo:while(true){
System.out.println("请输入今天的星期数,输入0退出程序"); //操作提示
Scanner sc = new Scanner(System.in); //创建对象
int week = sc.nextInt(); //录入数据
switch(week){
case 0:
System.out.println("程序退出");
break loop;
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;
}
}
}
}
案例12:猜数字(Random函数)
需求:程序生成一个1-100的随机数,用户猜数字,根据数字与目标的相对大小给出提示。
import java.util.Random; //导入随机函数包
import java.util.Scanner; //导入用户录入包
//需求:程序生成一个1-100的随机数,用户猜数字,根据数字与目标的相对大小给出提示。
public class case12{
public static void main(String[] args){
Random r = new Random(); //创建对象(随机函数)
Scanner sc = new Scanner(System.in);
int num = r.nextInt(100) + 1; //接受数据,范围是1-100
System.out.println("一个1-100内的随机数已生成");
loop:while(true){ //不确定循环次数,使用while死循环,命名loop。
System.out.println("猜猜这是几"); //进入循环,打印提示
int guess = sc.nextInt(); //录入猜的数字
if(guess < num){
System.out.println("你猜的数字偏小了"); //比较,偏小时提示
}
else if (guess > num){
System.out.println("你猜的数字偏大了"); //比较,偏大时提示
}
else if (guess == num){
System.out.println("恭喜你!你猜对了!!"); //猜中时提示,并中断循环
break loop;
}
else{
System.out.println("输入有误,请输入1-100以内的数字"); //输入数字超范围时的提示
}
}
}
}