JAVA零学习之基础归纳(三)--循环语句

从零开始学习java,一天进步一点点,一天学习一点点,多掌握知识和多多做题,本篇主要写java的基本语法中的某些循环

Java基础语法–java基础学习(三)

注: 续上篇《JAVA零学习之基础归纳(二)》
1.switch语句
1.1switch语句结构
  • 格式
switch(表达式){
    case 1:
   		语句体1;
   		break;
    case 2:
    	语句体2;
    	break;
    ......
    default;
    	语句体n+1;
    	break;
}
  • 执行流程:
    • 首先计算出表达式的值,值得类型只能是:byte、short、int、char、String、enum
    • 首次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
1.2 switch语句练习–春夏秋冬
  • 需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季 节,并输出。
  • 运行结果:

春:3、4、5

夏:6、7、8

秋:9、10、11

冬:1、2、12

  • 实例代码:
import java.util.Scanner;
public class Test4{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个月份,返回季节:");
		int inmu1 = sc.nextInt();	
		switch(inmu1){
			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;
			case 1:
			case 2:
			case 12:
			System.out.println("冬季");
			break;
			default:
			System.out.println("输入月份错误");
			break;
		}
	}
}
  • 注意:如果switch中得case,没有对应break的话,则会出现case穿透的现象
2.for循环
2.1循环:

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句, 当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直 执行下去,形成死循环。

  • for循环格式:

for (初始化语句;条件判断语句;条件控制语句) {

​ 循环体语句;

}

  • 格式解释:

    • 初始化语句:用于表示循环开始时的状态,简单的说就是循环开始的时候什么样
    • 条件判断句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
    • 循环体语句:用于表示反复执行的内容,简单说就是循环反复执行的事情
    • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去
  • 执行流程:

    ①执行初始化语句

    ②执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行

    ③执行循环体语句

    ④执行条件控制语句

    ⑤回到②继续

2.2 for循环练习–输出数据
  1. 需求:在控制台输出1-5和5-1的数据
  2. 实例代码:
public class  ForTest01 {
	public static void main(String[] args){
		//需求:输出数据1-5
		for (int i=0; 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. 需求:求1-5之间的数据和,并把求和结果在控制台输出
  2. 示例代码:
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 += 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);   
	} 
}
  • 本题要点:
    • 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量
    • 求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的
2.4 for循环练习–求偶数和奇数和
public class ForTest03 {   
	public static void main(String[] args) {
		//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
		int num1 =0;
		int num2 =0;
		for (int i2=0;i2<=100;i2++){
		 //对1-100的偶数奇数求和,需要对求和操作添加限制条件,判断是否
			if (i2 % 2 == 0){
				num1+=i2;
			}else if(i2 %2 ==1){
				num2+=i2;
			}else{
				System.out.println("错误");
			}
	//在for循环里面使用Sys输出时,实际上是for循环一次执行Sys输出一次,
	// 将Sys输出拿出for循环外面,则只输出一次也就是最后的结果
		}	//for循环结束
		System.out.println(num1);
		System.out.println(num2);  
	}
}
2.5 for循环练习–水仙花
  • 需求:在控制台输出所有的“水仙花数”

  • 解释:什么是水仙花数?

  • 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数

    例如 153 3 * 3 * 3 + 5 * 5 * 5 + 1 * 1 * 1 = 153

  • 思路:

  1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
  2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数
  • 示例代码
public class ForTest04 {   
	public static void main(String[] args) {   
	//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束   
	for(int i=100; i<1000; i++) {   
	//在计算之前获取三位数中每个位上的值
     int ge = i%10; 
     int shi = i/10%10;   
     int bai = i/10/10%10;
   //判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等   
   	if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {   
   	//输出满足条件的数字就是水仙花数   
   	System.out.println(i);   
   			}
   		}   
   	} 
 }

2.6 for循环练习–统计水仙花数个数
  • 需求:统计“水仙花数”一共有多少个,并在控制台输出个数
  • 示例代码:
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 + "个");  
	 } 
}
  • 本题要点:
    • 今后如果需求带有统计xxx,请先想到计数器变量
    • 计数器变量定义的位置,必须在循环外部
3.while循环
3.1.while循环的完整格式:

初始化语句;

while (条件判断语句) {

​ 循环体语句;

​ 条件控制语句;

}

  • while循环的执行流程:

    ①执行初始化语句

    ②执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

    ③执行循环体语句

    ④执行条件控制语句

    ⑤回到②继续

  • 示例代码:

public class WhileDemo {
	public static void main(String[] args){
		for(int i=1;i<=5;i++){
			System.out.println("Hellow World");
		}
		System.out.println("-----------")
		int j =1;
		while(j<=5){
			System.out.println("Hellow World");
			j++;
		}
	}
}
3.2while循环应用–珠穆朗玛峰
  • 需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫 米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
  • 示例代码:
public class WhileTest{
    public static void main(String[] args){
   		double count  =0;
		double paper  = 0.1;
		
		//因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环   
		//折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高
		
		while(paper <=8844430){	
        	//循环的执行过程中每次纸张折叠,纸张的厚度要加倍
			paper=paper*2;
			//在循环中执行累加,对应折叠了多少次
			count ++;
		}
		//打印计数器的值   
		System.out.println("需要折叠:" + count + "次")
}

4.循环细节
4.1 do…while循环结构
  • 完整结构:
初始化语句:

do{

	循环语句;

	条件控制语句;

}while(条件判断句);
  • 执行语句:

​ ①执行初始化语句

​ ②执行循环体语句

​ ③执行条件控制语句

​ ④执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行

​ ⑤回到②继续

  • 示例代码:

    //需求:在控制台输出5次"HelloWorld"
    public class DoWhileDemo{
    	public static void main(String[] args){
    		//1、用for()循环
    		for(int i=0;i<5;i++){
    			System.out.println("HelloWorld");
    		}
    		System.out.println("--------------");
    		//2、用do....while()方法
    		int a =0;
    		do{
    			System.out.println("HelloWorld");
    			a++;
    		}while(a<5);
    		
    	}
    }  
    
  • do…while循环练习

public class DoWhileDemo2{
	public static void main(String[] args){
// 循环输出1-10
		int in1 = 0;
		do{
			System.out.print(in1);
			in1++;	
		}while(in1<=10);
		System.out.println();
		System.out.println("-------");
				
	// 循环输出10-1	
		int in2 = 10;
		do{
			System.out.print(in2);
			in2--;
		}while(in2>=0);
		System.out.println();
		System.out.println("--------");
			
	// 1-100之间,所有偶数和奇数的和
		int inmu1 = 0;
		int inmu2 = 0;
		int in3 = 0;
		do{
			if(in3 % 2 == 0){
				inmu1+=in3;	//偶数和
			}else{
				inmu2+=in3;	//奇数和
			}
			in3++;
		}while(in3<=100);
		System.out.println("偶数和"+inmu1);
		System.out.println("奇数和"+inmu2);
		
	}
}
4.2三种循环的区别
  • 三种循环区别
    • for循环和while循环先判断条件是否成立,然后在决定是否执行循环体(先判断在执行)。
    • do…while循环先执行一次循环体,再去判断条件是否成立,然后在是否继续执行循环体(先执行一次在判断)。
  • for循环和while的区别
    • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了。
    • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,改变量还可以继续使用。
  • 死循环(无限循环)的三种格式
    • for(; ; ){};
    • while(true){};
    • do{}while(true);
4.3跳转控制语句
  • 跳转控制语句(break)
    • 跳出循环,结束循环。
  • 跳转控制语句(continue)
    • 跳过本次循环,继续执行下次循环。
  • 注意:continue只能在循环中进行使用
public class DoWhileDemo3{
	public static void main(String[] args){
		int a = 0;
		for(a=0;a<=10;a++){
			if(a == 5){
			System.out.println(a);}
			break;
		}
		System.out.println("break语句");
		System.out.println("--------");
		
		int c = 0;
		for(c=0;c<=10;c++){
			if(c==5){
				continue;	
			}
			System.out.println(c);
		}
		System.out.println("continue语句");
		
	}
}
4.4循环嵌套
  • 循环嵌套概述:在循环中,继续定义循环
  • 示例代码(九九乘法表):
public class DoWhileDemo4{
	public static void main(String[] args){
		int x = 0;
		int y = 0;
		for (int j =0;j<=9;j++){
			for(int k =0;k<=j;k++){
				System.out.print(j+"*"+k+"="+(j*k)+ " ");
			}
		System.out.println();
		}
	}
}

理解:

  1. (整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕,外循环是不会 继续向下执行的)
  2. 外循环执行一次,内循环执行一圈

5.总结

本篇大部分为记忆,但最好不要死记硬背,因为这样就算记住在应用上也是很生涩的,并没有那种依靠自己理解来记住用的方便,而基础的问题一定要掌握,基础打好等到后面难的也会变简单。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值