概述
1_>switch
1.1_switch结构
目标:
switch的作用?switch语句的格式?switch语句的执行流程?分析一下 if else if 以及 switch的使用场景
小结:
switch的作用?
多条件的时候 去选择。
- switch语句的格式?
switch( 表达式 ){ byte short char int 枚举 String
case 值1:
语句体;
break;
case 值2:
语句体;
break;
case 值3:
语句体;
break;
case 值4:
语句体;
break;
.....
default:
如果所有的case 都不匹配的情况下 就会走default:
}
格式说明:
switch的结束 有两种情况, 1. 如果 遇到break 那么 switch结束 2. 如果遇到 switch花括号 ,同样也会结束掉switch
相关案例
import java.util.Scanner;
public class SwitchDemo{
public static void main(String[] args) {
System.out.println("开始");
//需求:键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,...星期日
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数(1-7):");
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;
}
System.out.println("结束");
}
}
注意事项:
switch语句的执行流程?
流程图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKJ99HPV-1616067882701)(assets/1560331656653.png)]
1.2_switch案例之春夏秋冬
目标:
能够使用switch结构来显示输入的月份所对应的季节,case的穿透
小结:
解题步骤:
- 键盘录入月份数据,使用变量接收
- 多情况判断,这里采用switch语句实现
- 在每种情况中,完成输出对应的季节
相关案例:
import java.util.Scanner;
public class SwitchTest {
public static void main(String[] args) {
//键盘录入月份数据,使用变量接收
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份:");
int month = sc.nextInt();
//case穿透
switch(month) {
case 1:
case 2:
case 12:
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("你输入的月份有误");
}
}
}
case穿透:
如果一个case 后面没有break,就会出现 穿透现象 --> 当匹配到该case 的时候,会不判断 直接执行
拓展:
练习1: 键盘输入数字1~5,控制台输出工作日,输入6,7时,输出休息日。
分析: 1、导包并创建Scanner对象。
2、提示用户输入数字
3、使用nextInt()方法获取键盘录入的整数
4、使用switch结构判断数字的值,输出对应的内容。
练习2: 以下程序的打印结果是什么?
int y=2;
switch(y++){
default:
y++;
case 2:
y--;
case 3:
y++;
}
System.out.println(y);
练习3:
5.以下java代码,当x=2时,运行结果是( )
switch(x){
case 1:
System.out.println(1);
case 2:
case 3:
System.out.println(3);
case 4:
System.out.println(4);
}
A:没有输出任何结果
B:输出结果为3
C:输出结果为3和4
D:输出结果为1、3和4
2__>for(重点掌握)
2.1_for结构
目标:
for循环语句的格式? for循环语句的执行流程?
小结:
使用循环语句用来干嘛?
重复去执行某一些代码(动作)
- for循环语句的格式?
for(初始化语句 就是定义一个变量; 条件判断语句 关系表达式; 条件控制语句 自增 自减 ){
循环体;
}
-
for循环语句的执行流程?
1.先执行初始化语句 , 而且 只会执行一次 2.执行 条件判断语句, true -> 执行 循环体的内容 -> 执行条件控制语句 : false 结束掉循环
运行流程图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yOhVTTKe-1616067882712)(assets/1560365203114.png)]
相关案例:
public class ForDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("--------");
//用循环改进
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
}
}
2.2_for循环案例之输出数据
目标:
能够使用for循环在控制台输出1-5和5-1的数据
小结:
相关案例:
public class ForTest01 {
public static void main(String[] args) {
//需求:输出数据1-5
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循环案例之求和
目标:
能够使用for循环将1-5的和求出来
小结:
解题步骤:
-
求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
-
从1开始到5结束的数据,使用循环结构完成
-
将反复进行的事情写入循环结构内部,此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
-
当循环执行完毕时,将最终数据打印出来
相关案例:
public class ForTest02 {
public static void main(String[] args) {
//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
int sum = 0;
//从1开始到5结束的数据,使用循环结构完成
for(int i=1; i<=5; i++) {
//将反复进行的事情写入循环结构内部,此处反复进行的事情是将数据 i
//加到用于保存最终求和的变量 sum 中
sum += i; // sum = sum + i;
/*
第一次 : sum = sum + i = 0 + 1 = 1;
第二次 :sum = sum + i = 1 + 2 = 3
第三次:sum = sum + i = 3 + 3= 6
第四次: sum = sum + i = 6 + 4 = 10
第五次: sum = sum + i = 10 + 5 = 15
*/
}
//当循环执行完毕时,将最终数据打印出来
System.out.println("1-5之间的数据和是:" + sum);
}
}
1.先定义一个变量sum = 0 ;
2.定义一个循环,然后在循环内部, sum += 要求的值
2.4_for循环案例之求偶数和
目标:
能够使用for循环求出1~100之间的偶数的和
小结:
解题步骤:
-
求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
-
对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
-
对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
-
当循环执行完毕时,将最终数据打印出来
相关案例:
public class ForTest03 {
public static void main(String[] args) {
//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
int sum = 0;
//对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
for(int i=1; i<=100; i++) {
//对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
if(i%2 == 0) {
sum += i;
}
}
//当循环执行完毕时,将最终数据打印出来
System.out.println("1-100之间的偶数和是:" + sum);
}
}
2.5_for循环案例之秋水仙花数
目标:
能够使用for循环求出100~999之间的水仙花数。什么是水仙花数,怎么求每一个位置上的数字
385 -> 百位 十位 个位
小结:
水仙花数:
首先,是一个三位数, 个位的立方+ 十位的立方+ 百位的立方 == 这个数
怎么求每一个位置上的数字
解题步骤:
-
输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
-
求出三位数的个位-> 直接使用这个数字%10
123 % 10 = 12......3
- 求出三位数的十位 ->将该数字先 / 10 然后在 % 10
123 / 10 = 12 % 10 = 1......2
- 求出三位数的百位 - > 直接将该数 /100
123 / 100 = 1 % 10 = 1
-
定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
-
输出满足条件的数字就是水仙花数
相关案例:
public class ForTest04 {
public static void main(String[] args) {
//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
/*
for(int i=100; i<=999; i++) {
}
*/
for(int i=100; i<1000; i++) {
//在计算之前获取三位数中每个位上的值
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
//Math.pow(ge , 3)
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
//输出满足条件的数字就是水仙花数
System.out.println(i);
}
}
}
}
2.6_for循环案例之统计
目标:
能够使用for循环统计100~999之间的水仙花数个数
小结:
解题步骤:
-
定义变量count,用于保存“水仙花数”的数量,初始值为0
-
输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
-
在计算之前获取三位数中每个位上的值
-
在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1
-
打印输出最终结果
相关案例:
public class ForTest05 {
public static void main(String[] args) {
//定义变量count,用于保存“水仙花数”的数量,初始值为0
int count = 0;
//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
for(int i=100; i<1000; i++) {
//在计算之前获取三位数中每个位上的值
int ge = i%10;
int shi = i/10%10;
int bai = i/10/10%10;
//在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
count++;//
}
}
//打印输出最终结果
System.out.println("水仙花共有:" + count + "个");
}
}
练习:
统计水仙花数的和
public class ForDemo5{
public static void main(String[] args){
//需求: 统计满足水仙花数的总和
int sum = 0;
for(int i = 100 ; i < 1000; 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){
sum += i;
}
}
System.out.println("sum:" + sum);
}
}
总结:
1.定义一个变量(计数器) 值为0;
2.满足条件的时候, 变量(计数器)+1 -> count++
3_>while
3.1_while结构(掌握)
目标:
while循环的格式的怎么样的?while的运行流程是怎么样的?
小结:
- while循环的格式
1.初始化变量
while(2.条件判断语句){
3.循环体语句;
4.条件控制语句;
}
- while的运行流程是怎么样的:
1-> 2 -> 3 ->4 ->2 直到2的判断为false就结束
运行流程图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wN0xRoTN-1616067882713)(assets/1560367330245.png)]
相关案例:
public class WhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//while循环实现
int j = 1;
while(j<=5) {
System.out.println("HelloWorld");
j++;
}
}
}
**练习:**使用while结构求出 1 - 100 里面 能被2 整除 同时也能被3 整除的数的 和
public class WhileDemo{
//使用while结构求出 1 - 100 里面 能被2 整除 同时也能被3 整除的数的 和
/*
初始化语句; int i = 1 ;
while(条件判断语句){ i <= 100
语句体;
条件控制语句; i++;
}
能被2 整除 同时也能被3整除 :i % 2 == 0 && i % 3 == 0
先定义sum = 0;
sum += 要求的数字
*/
public static void main(String[] args){
int i = 1 ;
int sum = 0;
while(i <= 100){
if(i % 2 == 0 && i % 3 == 0){
sum += i;
}
i++;
}
System.out.println("sum:" + sum);
}
}
3.2_while循环案例之珠穆朗玛峰
目标:
世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问,我折叠多少次,可以折出比珠峰高?
小结:
解题步骤:
-
定义一个计数器,初始值为0
-
定义纸张厚度
-
定义珠穆朗玛峰的高度
-
因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
-
循环的执行过程中每次纸张折叠,纸张的厚度要加倍
-
在循环中执行累加,对应折叠了多少次
-
打印计数器的值
相关案例:
public class WhileTest {
public static void main(String[] args) {
//定义一个计数器,初始值为0
int count = 0;
//定义纸张厚度
double paper = 0.1;
//定义珠穆朗玛峰的高度
int zf = 8844430;
//因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
//折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
while(paper < zf) {
//循环的执行过程中每次纸张折叠,纸张的厚度要加倍
//paper *= 2;
paper = paper * 2;
//在循环中执行累加,对应折叠了多少次
count++;
}
//打印计数器的值
System.out.println("需要折叠:" + count + "次");
}
}
3.3_do…while 循环语句(了解)
目标:
do…while的格式是怎么样的?它的运行流程又是怎么样的?do…while的特点?
小结:
1. do…while的格式是怎么样的?
1.先初始化语句;
do{
循环体语句;3
条件控制语句;4
}while(条件判断语句 2);
- do…while的运行流程是怎么样的?
1 -> 3 ->4 -> 2 -> 3 -> 4 ... 直到2的判断为false 才结束
-
do…while的特点?
第一次执行的时候 ,是不走判断语句的,会先直接执行一次 循环体的内容
执行图解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ieGEdclH-1616067882715)(assets/1560367879461.png)]
相关案例:
public class DoWhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//do...while循环实现
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
3.4_三种循环的区别
目标:
for循环、while循环以及do…while循环种循环语句各自的应用场景?
小结:
-
for循环、while循环以及do…while循环种循环语句各自的应用场景?
for while do-while 特点 先执行判断,再执行循环 先执行判断,再执行循环 先执行一次循环,再执行判断 初始化变量 不能在循环外使用 可以使用 可以使用 应用场景 如果明确循环的次数 如果不明确循环的次数 基本不用
相关案例:
public class LoopTest {
public static void main(String[] args) {
/*
//for循环
for(int i = 3; i<3; i++) {
System.out.println("我爱Java");
}
System.out.println("--------");
//while循环
int j = 3;
while(j<3) {
System.out.println("我爱Java");
j++;
}
System.out.println("--------");
//do...while循环
int k = 3;
do {
System.out.println("我爱Java");
k++;
}while(k<3);
*/
/*
//for循环
for(int i = 1; i<3; i++) {
System.out.println("我爱Java");
}
//System.out.println(i);
System.out.println("--------");
//while循环
int j = 1;
while(j<3) {
System.out.println("我爱Java");
j++;
}
System.out.println(j);
System.out.println("--------");
*/
//死循环
/*
for(;;) {
System.out.println("for");
}
*/
/*
while(true) {
System.out.println("while");
}
*/
do {
System.out.println("do...while");
}while(true);
}
}
死循环:
for(;????{}
while(true){}
do{}while(true);
3.5_控制跳转语句
目标:
break语句的作用?continue的作用?
用在循环结构,里面的判断语句
小结:
- break语句的作用?continue的作用?
跳转控制语句 | 作用 |
---|---|
continue | 跳过本次循环 |
break | 结束当前的循环 |
注意: continue只能在循环中进行使用!
相关案例:
public class ControlDemo {
public static void main(String[] args) {
for(int i = 1; i<=5; i++) {
if(i%2 == 0) {
//continue;
break;
}
System.out.println(i);
}
}
}
拓展:
练习1:控制台输出1-10,打印的过程中,不要3的倍数
/*
需求:控制台输出1-10,打印的过程中,不要3的倍数
分析:
1. 利用for循环语句打印1-10
2. 判断当前的数字是否为3的倍数,如果是3的倍数,跳过。
3. 如果没有跳过的数字则输出即可。
*/
public class Demo2{
public static void main(String[] args) {
//1. 利用for循环语句打印1-10
for(int i=1 ; i<=10 ; i++){
//2. 判断当前的数字是否为3的倍数,如果是3的倍数,跳过。
if(i%3==0){
continue;//跳过本次循环
}
//3. 如果没有跳过的数字则输出即可。
System.out.println(i);
}
}
}
3.6_循环嵌套(了解)
目标:
什么是嵌套循环,嵌套循环的执行流程是如何?嵌套循环的执行次数?
小结:
-
什么是循环嵌套?
循环里面放循环
-
嵌套循环的执行流程是如何?
先执行外循环的判断,如果判断结果为true ,就会执行内循环 ,会完整执行完内循环才会到下一次外循环
-
嵌套循环的执行次数?
-
嵌套循环的应用场景
重复执行某一个动作的过程中,同时重复执行另外一个动作
相关案例:
public class ForForDemo {
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("--------");
}
}
}
练习:
1 + 1 = 2 1 + 2 = 3 1 + 3 = 4 System.out.print();
2 + 1 = 3 2 + 2 = 4 2 + 3 = 5 System.out.println();
3 + 1 = 4 3 + 2 = 5 3 + 3 = 6
作业: 9 * 9 乘法表
4_>Random
4.1_Random
目标:
Random类使用来干什么的?使用步骤是怎么样的?
小结:
-
Random类使用来干什么的?
获取随机数
-
使用步骤是怎么样的?
1.导包 import java.util.Random;
2.创建随机数对象 Random r = new Random();
3.获取随机数 int a = r.nextInt(数字);
数字:表示随机数生成的范围 从0开始 到这个数字,但是 不包含数字 10 ->[0,9]
Random 和 Scanner的比较
区别 | Random | Scanner |
---|---|---|
导包 | import java.util.Random; | import java.util.Scanner; |
创建对象 | Random r = new Random(); | Scanner sc = new Scanner(System.in); |
提示语 | 不需要 | 提示 |
接收数据的方法 | int a = r.nextInt(数值); | int a = sc.nextInt(); |
相关案例:
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
//创建对象
Random r = new Random();
//用循环获取10个随机数
for(int i=0; i<10; i++) {
//获取随机数
int number = r.nextInt(10);
System.out.println("number:" + number);
}
//需求:获取一个1-100之间的随机数
int x = r.nextInt(100) + 1;
System.out.println(x);
}
}
4.2_猜数字
目标:
需求:
程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
当猜错的时候根据不同情况给出相应的提示
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了
1. 系统生成一个随机数[1,100]
2.使用键盘录入,我们输入一个数字 去和 系统生成的随机数去比较
2.1. 比较的结果有以下三种
我们输入的数字比随机数大
我们输入的数字比随机数小
我们输入的数字和随机数相等
3.程序直到我们输入的数字和随机数相同的时候才会结束
小结:
解题步骤:
-
要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100
-
使用程序实现猜数字,每次均要输入猜测的数字值,需要使用键盘录入实现
-
比较输入的数字和系统产生的数据,需要使用分支语句。这里使用if…else…if…格式,根据不同情况进行猜测结果显示
相关案例:
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) {
//要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true) {
//使用程序实现猜数字,每次均要输入猜测的数字值,需要使用键盘录入实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sc.nextInt();
//比较输入的数字和系统产生的数据,需要使用分支语句。这里使用if..else..if..格式,根据不同情况进行猜测结果显示
if(guessNumber > number) {
System.out.println("你猜的数字" + guessNumber + "大了");
} else if(guessNumber < number) {
System.out.println("你猜的数字" + guessNumber + "小了");
} else {
System.out.println("恭喜你猜中了");
break;
}
}
}
}
最后
以上就是羞涩柚子为你收集整理的switch&循环语句--java基础学习的全部内容,希望文章能够帮你解决switch&循环语句--java基础学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复