switch&循环语句--java基础学习

1_>switch

1.1_switch结构

目标:

switch的作用?switch语句的格式?switch语句的执行流程?分析一下 if else if 以及 switch的使用场景

小结:

switch的作用?

​ 多条件的时候 去选择。

  1. switch语句的格式?
switch( 表达式 ){   byte short char int 枚举 String 
    case1:
              语句体;
              break;
      case2:
              语句体;
              break; 
        case3:
              语句体;
              break; 
        case4:
              语句体;
              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的穿透

小结:

解题步骤:

  1. 键盘录入月份数据,使用变量接收
  2. 多情况判断,这里采用switch语句实现
  3. 在每种情况中,完成输出对应的季节
相关案例:
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:输出结果为34
    D:输出结果为134

2__>for(重点掌握)

2.1_for结构

目标:

for循环语句的格式? for循环语句的执行流程?

小结:

使用循环语句用来干嘛?

重复去执行某一些代码(动作)

  1. for循环语句的格式?
for(初始化语句 就是定义一个变量; 条件判断语句  关系表达式; 条件控制语句  自增  自减 ){
    
       循环体;
}

  1. 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的和求出来

小结:

解题步骤:

  1. 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0

  2. 从1开始到5结束的数据,使用循环结构完成

  3. 将反复进行的事情写入循环结构内部,此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中

  4. 当循环执行完毕时,将最终数据打印出来

相关案例:
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之间的偶数的和

小结:

解题步骤:

  1. 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0

  2. 对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同

  3. 对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数

  4. 当循环执行完毕时,将最终数据打印出来

相关案例:
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 -> 百位 十位 个位

小结:

水仙花数:

首先,是一个三位数, 个位的立方+ 十位的立方+ 百位的立方 == 这个数 

怎么求每一个位置上的数字


解题步骤:

  1. 输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束

  2. 求出三位数的个位-> 直接使用这个数字%10

			123 % 10  = 12......3
  1. 求出三位数的十位 ->将该数字先 / 10 然后在 % 10
			123 / 10 = 12 % 10 = 1......2
  1. 求出三位数的百位 - > 直接将该数 /100
				123 / 100 = 1 % 10 = 1 
  1. 定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等

  2. 输出满足条件的数字就是水仙花数

相关案例:
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之间的水仙花数个数

小结:

解题步骤:

  1. 定义变量count,用于保存“水仙花数”的数量,初始值为0

  2. 输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束

  3. 在计算之前获取三位数中每个位上的值

  4. 在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1

  5. 打印输出最终结果

相关案例:
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的运行流程是怎么样的?

小结:
  1. while循环的格式
1.初始化变量
while(2.条件判断语句){
    3.循环体语句;
    4.条件控制语句;   
}   


  1. 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毫米,请问,我折叠多少次,可以折出比珠峰高?

小结:

解题步骤:

  1. 定义一个计数器,初始值为0

  2. 定义纸张厚度

  3. 定义珠穆朗玛峰的高度

  4. 因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度

  5. 循环的执行过程中每次纸张折叠,纸张的厚度要加倍

  6. 在循环中执行累加,对应折叠了多少次

  7. 打印计数器的值

相关案例:
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);
  1. do…while的运行流程是怎么样的?
1 -> 3 ->4 -> 2 -> 3 -> 4 ... 直到2的判断为false 才结束
  1. 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循环种循环语句各自的应用场景?

小结:
  1. for循环、while循环以及do…while循环种循环语句各自的应用场景?

    forwhiledo-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的作用?

用在循环结构,里面的判断语句

小结:
  1. 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_循环嵌套(了解)

目标:

什么是嵌套循环,嵌套循环的执行流程是如何?嵌套循环的执行次数?

小结:
  1. 什么是循环嵌套?

    循环里面放循环

  2. 嵌套循环的执行流程是如何?

    先执行外循环的判断,如果判断结果为true ,就会执行内循环 ,会完整执行完内循环才会到下一次外循环

  3. 嵌套循环的执行次数?

  4. 嵌套循环的应用场景

    重复执行某一个动作的过程中,同时重复执行另外一个动作

相关案例:
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类使用来干什么的?使用步骤是怎么样的?

小结:
  1. Random类使用来干什么的?

    获取随机数

  2. 使用步骤是怎么样的?

1.导包 import java.util.Random;
2.创建随机数对象 Random r = new Random();
3.获取随机数 int a = r.nextInt(数字);
  数字:表示随机数生成的范围  从0开始 到这个数字,但是 不包含数字     10 ->[0,9]
Random 和 Scanner的比较
区别RandomScanner
导包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. 要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100

  2. 使用程序实现猜数字,每次均要输入猜测的数字值,需要使用键盘录入实现

  3. 比较输入的数字和系统产生的数据,需要使用分支语句。这里使用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;
			}
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值