Java EE基础班课程(第三天)
学习目标
- 掌握switch语句的使用
- 掌握循环语句
- for循环
- while循环
- do-while循环
- 流程控制语句
- continue
- break
- 熟悉三种循环区别
- 死循环
- 掌握Random的使用
switch语句
1.1格式和执行流程
/*
switch语句:
格式:
switch (表达式的值){
case 值:
语句体;break;
...
default:
语句体
}
执行流程:
1.switch 语句后面表达式的值的数据类型
可以是 byte short int String enum char
2.和case语句后的值进行匹配
如果匹配的上,就执行对应的语句体,在执行break
如果都不匹配执行 default 语句
*/
//键盘录入一个整数,输出对应星期几
public class Demo01Switch {
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 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("您输入的数据不匹配!!!");
}
}
}
1.2 测试switch语句后面表达式的值的数据类型
/*
switch 语句后面表达式的值的数据类型
可以是 byte short int String enum char
常量优化机制
byte b = 10;
*/
public class Demo02Switch {
public static void main(String[] args) {
Week week = Week.Sunday;
switch (week){
case Monday:
System.out.println("周一");break;
case Sunday:
System.out.println("周日");break;
default:
System.out.println("您的输入不匹配!!!");
}
/*char b = 49; //0 --65535
switch (b) {
case '1':
System.out.println("字符一");
break;
default:
System.out.println("您输入的不是字符1");
}
*/
//就业班讲枚举
/*String s = "1234";
switch (s) {
case "123":
System.out.println("一二三");
break;
default:
System.out.println("您输入的不是123");
}*/
/*int b = 10;
switch (b) {
case 1:
System.out.println("一");
break;
default:
System.out.println("您输入的不是1");
}*/
/*short b = 10;
switch (b) {
case 1:
System.out.println("一");
break;
default:
System.out.println("您输入的不是1");
}*/
/*byte b = 1;
switch (b) {
case 1:
System.out.println("一");
break;
default:
System.out.println("您输入的不是1");
}*/
}
}
enum Week{
Monday,Sunday
}
import java.util.Scanner;
/*
键盘录入一个数字输出对应月份
分析:
1.键盘录入
2.使用switch语句输出对应的月份
*/
public class Demo04练习 {
public static void main(String[] args) {
//1.键盘录入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个月份:");
int month = scanner.nextInt();
//2.使用switch语句输出对应的月份
switch (month){
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 8 :System.out.println("八月");break;
case 9 :System.out.println("九月");break;
case 10 :System.out.println("十月");break;
case 11 :System.out.println("十一月");break;
case 12 :System.out.println("十二月");break;
default: System.out.println("您输入月份不匹配!!!");
}
}
}
1.3switch语句的特点 case语句具有穿透性
import java.util.Scanner;
/*
case语句穿透性:
case语句只有遇到break语句才停止,否则就继续执行直到遇到break才停止,若没有break,就执行到switch语句结束
键盘录入一个数字输出对应季节 case语句穿透性
分析:
1.键盘录入
2.月份对应的季节
3 4 5 春天
6 7 8 夏天
9 10 11 秋天
12 1 2 冬天
3.使用switch语句 书写代码
*/
public class Demo05练习 {
public static void main(String[] args) {
//1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份");
int month = sc.nextInt();
//3.使用switch语句 书写代码
switch (month){
case 12 :
case 1 :
case 2 :System.out.println("冬天");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("您输入月份不匹配!!!");
}
}
}
1.4减肥计划
/*
需求:键盘录入星期数,显示今天的减肥活动。
周一:跑步
周二:游泳
周三:慢走
周四:动感单车
周五:拳击
周六:爬山
周日:好好吃一顿
分析:
1.键盘录入
2.使用switch语句判断 输出
*/
public class Demo06减肥计划 {
public static void main(String[] args) {
//1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数:");
int week = sc.nextInt();
// 2.使用switch语句判断 输出
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("您输入星期数不匹配!!!");
}
}
}
for循环
2.1循环分类
* for 循环
* while 循环
* do-while 循环
2.2for循环入门
/*
格式:
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
执行流程:
1.执行初始化语句
2.条件判断语句 如果判断语句的值 为true
3.执行循环体语句
4.条件控制语句
5.继续执行第二步 直到条件判断语句为false 结束for循环
*/
public class Demo01For入门 {
public static void main(String[] args) {
for (int i = 1; // 执行初始化语句
i <= 3; // 条件判断语句
i++) { // 条件控制语句
System.out.println("折返跑"); // 循环体语句
}
}
}
2.3for循环练习
/*
需求:在控制台输出1-5和5-1的数据
*/
public class Demo02For练习 {
public static void main(String[] args) {
for (int i = 1;i<=5;i++) {
System.out.println(i);
}
System.out.println("--------------");
//输出5--1
for (int i = 5;i>=1;i--) {
System.out.println(i);
}
}
}
2.3 for循环 求1–5之间的数据和
/*
需求:求1-5之间的数据和,并把求和结果在控制台输出
分析:
拿到1--5之间整数
累加
把累加和存放到一个变量中
*/
public class Demo03求和练习 {
public static void main(String[] args) {
//定义变量 用来接收累加和
int sum = 0;
//循环获取1--5之间数字
for (int i=1;i<=5;i++){
// System.out.println(i);
sum = sum + i;
}
System.out.println(sum);
}
}
2.4求和 1–100之间数据和
/*
需求:求1-100之间的数据和,并把求和结果在控制台输出
分析:
取出1--100之间所有数字 for循环
累加求和
*/
public class Demo04求和练习 {
public static void main(String[] args) {
//定义求和变量
int sum = 0;
//取出1--100之间所有的数据
for (int i = 1; i <= 100; i++) {
sum += i;
}
//打印最终求和
System.out.println(sum);
}
}
2.5 求1–100之间所有 奇数和, 所有偶数和
/*
需求:求1-100之间的数据和,并把求和结果在控制台输出
分析:
1.取出1--100之间所有数字 for循环
2.求奇数和
2.1定义求和变量
2.2判断是否为奇数,若是就累加
2.3打印奇数和
3.求偶数和
3.1定义求和变量
3.2判断是否为偶数,若是就累加
3.3打印偶数和
*/
public class Demo05求和练习 {
public static void main(String[] args) {
//求奇数和
//定义求和变量
int jiSum = 0;
for (int i = 1; i <= 100; i++) {
if (i%2!=0){
jiSum+=i;
}
}
System.out.println("1--100之间所有奇数和:"+jiSum);
//求偶数和
//定义求和变量
int ouSum = 0;
for (int i = 1; i <= 100; i++) {
if (i%2==0){
ouSum+=i;
}
}
System.out.println("1--100之间所有偶数和:"+ouSum);
}
}
2.6水仙花数
/*
水仙花数:
1.首先是一个三位数 100-999
2.各个位上数字的立方和 等于数字本身
分析:
1.先获取每一个三位数
2.求每个三位数各个位上数字
3.求每个三位数各个位上数字的立方和
4.判断立方和是否和数字本身相等 ,如果相等就是水仙花数
5.打印水仙花数到控制台
*/
public class Demo06水仙花 {
public static void main(String[] args) {
//1.先获取每一个三位数
for (int i = 100; i <= 999; i++) {
// System.out.println(i);
//2.求每个三位数各个位上数字
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//3.求每个三位数各个位上数字的立方和
//4.判断立方和是否和数字本身相等 ,如果相等就是水仙花数
if (ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
System.out.println(i);
}
}
}
}
2.7 统计水仙花数的个数
/*
水仙花数:
1.首先是一个三位数 100-999
2.各个位上数字的立方和 等于数字本身
分析:
1.先获取每一个三位数
2.求每个三位数各个位上数字
3.求每个三位数各个位上数字的立方和
4.判断立方和是否和数字本身相等 ,如果相等就是水仙花数 ,统计水仙花数
5.打印水仙花数到控制台 和 统计的个数打印到控制台
*/
public class Demo07统计水仙花数的个数 {
public static void main(String[] args) {
//定义变量 用来统计 水仙花数
int count = 0;
//求水仙花数
for (int i = 100; i < 999; i++) {
//求各个位上数字
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判断是否是水仙花数
if (ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
System.out.println(i);
count++;
}
}
System.out.println("水仙花数的个数:"+count);
}
}
2.8输出水仙花数两个一行
/*
水仙花数:
1.首先是一个三位数 100-999
2.各个位上数字的立方和 等于数字本身
换行:
println(); 底层默认有个换行符
print(); 默认没有换行
分析:
1.先获取每一个三位数
2.求每个三位数各个位上数字
3.求每个三位数各个位上数字的立方和
4.判断立方和是否和数字本身相等 ,如果相等就是水仙花数 ,统计水仙花数
5.打印水仙花数到控制台 和 统计的个数打印到控制台
*/
public class Demo08输出水仙花数两个一行 {
public static void main(String[] args) {
/*int count = 0;
for (int i = 1; i <= 10; i++) {
System.out.print("你好");
count++;
if (count % 5 == 0) {
System.out.println();
}
}*/
//定义变量 用来统计 水仙花数
int count = 0;
//求水仙花数
for (int i = 100; i < 999; i++) {
//求各个位上数字
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判断是否是水仙花数
if (ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
System.out.print(i+" ");
//统计水仙花数的个数
count++;
//立刻和2取模 若能被2整除 就打印换行
if (count%2==0){
System.out.println();
}
}
}
System.out.println("水仙花数的个数:"+count);
}
}
2.9for循环嵌套
/*
嵌套for循环:
1.外层for循环控制行数,内侧for循环控制列数
2.外层for循环跑一次,内层for循环跑一圈
4、有一个输出语句System.out.print("@")。使用这个语句,
在控制台打印出一个四行五列的长方形,效果如下:
@@@@@
@@@@@
@@@@@
@@@@@
*/
public class Demo09For循环嵌套 {
public static void main(String[] args) {
for (int j = 0; j < 4; j++) { //外层for循环控制行数
for (int i = 0; i < 5; i++) { //内侧for循环控制列数
System.out.print("@");
}
System.out.println();
}
//2.外层for循环跑一次,内层for循环跑一圈
for (int j = 1; j <= 3; j++) { //外层for循环控制行数
for (int i = 1; i <= 4; i++) { //内侧for循环控制列数
System.out.print(j+"@"+i + " ");
}
System.out.println();
}
}
}
2.10 九九乘法表
public class Demo10九九乘法表 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+ "*"+ i+"="+i*j + "\t");
}
System.out.println();
}
}
}
while循环
/*
while 循环
1.格式:
初始化语句
while(条件判断语句){
循环体语句;
条件控制语句;
}
2.执行流程
1.初始化语句
2.条件判断语句 ==>false 结束循环
==>true ==> 循环体语句 ==>条件控制语句 ==>条件判断语句
*/
public class Demo01While入门 {
public static void main(String[] args) {
//打印1--5
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
System.out.println("----------");
int i = 1;
while (i <= 5){
System.out.println(i);
i++;
}
System.out.println("-----------");
for (int j = 5; j > 0; j--) {
System.out.println(j);
}
System.out.println("-----------");
int j = 5;
while (j > 0){
System.out.println(j);
j--;
}
}
}
3.1计算1–100之间的数据和
public class Demo02While求和 {
public static void main(String[] args) {
//使用for循环 求1--100之间数据和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum+=i;
}
System.out.println(sum);
//使用while循环 求1--100之间数据和
//定义求和变量
int sum2 = 0;
int i = 1;
while (i<=100){
sum2+=i;//满足条件累加
i++;
}
System.out.println(sum2);
}
}
do-while循环
/*
do-while
格式:
初始化语句
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
1.初始化语句
2.循环体语句
3.循环体语句
4.条件判断语句 ==> false 结束循环
==> 循环体语句 ==> 循环体语句 ==> 条件判断语句
*/
public class Demo01DoWhile入门 {
public static void main(String[] args) {
//打印1--5到控制台
//for循环实现
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
System.out.println("--------");
//while循环实现
int i = 1;
while (i<=5){
System.out.println(i);
i++;
}
System.out.println("--------");
//do-while 实现
int j = 1;
do {
System.out.println(j);
j++;
}while (j<=5);
}
}
4.1计算1–100之间的数据和 do-while
/*
计算1--100之间所有数据和 do-while实现
分析:
1.定义求和变量
2.使用do-while循环 取出满足条件数字
3.累加
4.打印结果
*/
public class Demo02DoWhile求和 {
public static void main(String[] args) {
//1.定义求和变量
int sum = 0;
//2.使用do-while循环 取出满足条件数字
int i = 1;
do {
//3.累加
sum+=i;
i++;
}while (i<=100);
//4.打印结果
System.out.println(sum);
}
}
三种循环的区别
1.for循环和while循环 是先判断 后执行,do-while循环 先执行一次在判断
2.for循环的初始化变量 只能在for循环中使用,while循环和dowhile循环在循环结束后,初始化变量还能使用
3.推荐使用 for循环
死循环格式
定义:
循环一直执行,停不下来
格式:
for(;;){}
while(true){} //推荐使用while(true){}
do{}while(true);
public class Demo01 {
public static void main(String[] args) {
//for循环的死循环
/*for (;;){
System.out.println("停不下来");
}*/
//while循环的死循环
/*while(true){
System.out.println("停不下来");
}*/
//do-while循环的死循环格式
do {
System.out.println("停不下来");
}while (true);
}
}
跳转控制语句
/*
continue:
在循环中的作用是跳过本次循环继续下一次
*/
public class Demo01Continue语句 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 3){
continue;
}
System.out.println(i);
}
}
}
/*
break
终止离我最近的循环
如果想终止外面一层的循环,就要使用循环别名,break别名
*/
public class Demo02Break语句 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 3){
break;
}
System.out.println(i);
}
wc: for (int i = 0; i < 3; i++) {
nc: for (int j = 0; j < 4; j++) {
if (j==2){
break wc;
}
System.out.println(i + "==> " + j);
}
}
}
}
随机数
import java.util.Random;
/*
Random
1.导包
import java.util.Random
2.创建对象
Random r = new Random();
3.生成随机数
int num = r.nextInt(正整数); //0 到正整数之间数据 包含0不含正整数 [0,正整数)
*/
public class Demo01随机数 {
public static void main(String[] args) {
//创建对象
Random r = new Random();
//生成随机数
for (int i = 0; i < 10; i++) {
int num = r.nextInt(10); //生成0--9之间的随机数
System.out.println(num);
}
}
}
8.1生成22–88之间的随机数
import java.util.Random;
public class Demo02随机数22到88 {
public static void main(String[] args) {
//创建对象
Random r = new Random();
//生成随机数
//生区间随机数 r.nextInt(最大值 - 最小值 + 1)+最小值
int num = r.nextInt(67)+22;
System.out.println(num);
// 33 -- 88
int num2 = r.nextInt(56)+33;
System.out.println(num2);
}
}
8.2猜数字
import java.util.Random;
import java.util.Scanner;
/*
猜数字小游戏
分析:
1.生成一个随机数 1--100
2.猜数字
2.1键盘录入
2.2死循环
2.3猜对结束循环
*/
public class Demo03猜数字小游戏 {
public static void main(String[] args) {
//生成一个 1-- 100之间随机数
Random random = new Random();
//生成随机数
int num = random.nextInt(100) + 1;
//System.out.println(num);
//键盘录入
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你要猜的数字:");
int guessNum = scanner.nextInt();
//比较
if (guessNum > num) {
System.out.println("您猜的数字大了!!!");
} else if (guessNum < num) {
System.out.println("您猜的数字小了!!!");
} else if (guessNum == num) {
System.out.println("恭喜你猜中了!!!");
break;
}
}
}
}