while、do..while和for循环

一、循环

1.1 定义

  • 当满足一定条件的时候,重复执行某一段代码的操作
  • while和for和do…while是java中的循环

二、while循环(掌握)

2.1 定义

int i = 0; 初始化值

while(i<10){ 循环判断

​ 循环体 循环重复执行的代码

​ 循环控制语句

}

class Demo01 {
    
    
	public static void main(String[] args) {
    
    
		int i = 0;

		while(i < 10){
    
    
			System.out.println("Hello World!" + i);

			i++;
		}
		System.out.println("OVER!");
	}
}

2.2 详解while循环

  • 初始化条件语句
    • 定义一个初始化的变量
    • 只执行一次
  • 循环判断条件语句
    • 执行的次数比循环体多一次
    • 决定循环能不能执行的一个语句
  • 循环体
    • 被重复执行的代码
    • 循环真正的功能体现
  • 循环控制语句
    • 控制循环条件的变化
    • 如果没有这个可能会造成死循环

2.3 while案例01–计算0–num累加的结果

class Demo02 {
    
    
	public static void main(String[] args) {
    
    
		// 计算0--num累加的结果
		int i = 0;
		int sum = 0;

		while(i <= 100){
    
    	// 表示累加到100
			sum = sum + i;

			// 控制i自增
			i++;
		}
		System.out.println("sum = " + sum);
	}
}

2.4 计算1–100奇数累加

class Demo03 {
    
    
	public static void main(String[] args) {
    
    
		// 计算0--100奇数累加的结果
		// 循环初始化
		int i = 0;
		// 记录结果
		int sum = 0;
		// 开启while循环
		while(i <= 100){
    
    
			// 执行累加
			if(i % 2 != 0){
    
    
				sum += i;
			}

			// 控制循环变化
			i++;
		}

		System.out.println("sum = " + sum);

		System.out.println("============");

		// 循环初始化
		int j = 1;
		// 记录结果
		sum = 0;
		// 开启循环,到100结束
		while(j <= 100){
    
    
			// 执行累加
			sum += j;

			// 控制循环变化
			j += 2;

		}
		System.out.println("sum = " + sum);
	}
}

2.5 输出水仙花数

class Demo04 {
    
    
	public static void main(String[] args) {
    
    
		/*
			输出所有的水仙花数字
			1、确定初始化值
				100
			2、开启循环,确定结束条件
				999
			3、计算得出水仙花数并输出
				获取数字的各位字面值
				计算字面值的立方和
				比较立方和是否等于数字本身
			
		*/

		int i = 100;
		while(i <= 999){
    
    
			// 获取个位十位百位数字	123
			int ge = i % 10;
			int shi = i / 10 % 10;
			int bai = i / 100;

			// 计算立方和
			int sum = ge*ge*ge + shi*shi*shi +bai*bai*bai;

			// 比较、判断
			if(sum == i){
    
    
				System.out.println("水仙花数:" + i);
			}

			// 控制循环判断变化
			i++;
		}
	}
}

2.6 输出英文字母

class Demo05 {
    
    
	public static void main(String[] args) {
    
    
		/*
			7、输出小写的 a-z 以及大写的Z—A
			97--122		65--90

			8、求出1-1/2+1/3-1/4…..1/100的和

			9、输出20-80之间能被3整除的整数,每5个一行

			10、打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
		*/

		int i = 97;
		while(i <= 122){
    
    
			System.out.println((char)i);

			i++;
		}

		System.out.println("Hello World!");

		int j = 90;
		while(j >= 65){
    
    
			System.out.println((char)j);

			j--;
		}
	}
}

2.7 输出3的倍数,5个一行

class Demo06 {
    
    
	public static void main(String[] args) {
    
    
		// 9、输出20-80之间能被3整除的整数,每5个一行

		int i = 20;
		// 定义计数器
		int count = 0;
		while(i <= 80){
    
    
			// 判断i是否能被3整除
			if(i % 3 == 0){
    
    
				System.out.print(i + "\t");

				// 没找到一个符合条件的计数器就加1
				count++;
				// 怎么确定一行就是5个了---看计数器是不是5的倍数
				if(count % 5 == 0){
    
    
					System.out.print("\n");		
				}
			}
	

			i++;
		}
	}
}

猴子吃桃

class Demo09 {
    
    
	public static void main(String[] args) {
    
    
		/*
			猴子摘了很多桃子
			每天吃桃子半数,感觉不过瘾有多吃了一个
			到第十天的时候发现还剩下一个
			问:猴子第一天摘了多少桃子
		*/

		int i = 10;

		int count = 1;

		while(i > 0){
    
    
			count = (count+1)*2;

			i--;
		}

		System.out.println("猴子第一天摘了"+count+"桃子");
	}
}

2.8 while循环的特殊情况

  • 死循环
    • 循环判断条件返回结果一直是true
class Demo07 {
	public static void main(String[] args) {
		/*
		while(true){
			System.out.println("Hello World!");
		}
		*/

		int i = 0;
		while(i >= 0){
			System.out.println("Hello World!");
			i++;
		}
	}
}
  • 一次都没有执行
    • 第一次进入循环判断的时候,返回的结果是false
class Demo07 {
	public static void main(String[] args) {
		/*
		while(true){
			System.out.println("Hello World!");
		}
		*/

		int i = 0;
		while(i > 0){
			System.out.println("Hello World!");
			i++;
		}

		System.out.println("OVER!");
	}
}

三、do…while

3.1 定义

  • java中循环的一种
  • 和while极度相似
  • 循环开始后先执行do后面的代码–第一次执行不用经过循环条件判断
  • 第一次执行结束后在判断下一次能否执行

3.2 案例

class Demo08 {
    
    
	public static void main(String[] args) {
    
    
		int i = 0;
		// 先执行do后面的代码----这部分代码和while循环后面的代码书写方式、意义是相同的
		do{
    
    
			// 循环重复执行的代码
			System.out.println("Hello World!");

			// 条件控制语句
			i++;

			// 条件判断
		}while(i > 0);

		System.out.println("OVER!");
	}
}

四、for循环

4.1 定义

  • java中的一种循环
  • 能完成遍历、迭代的操作
  • 功能和while基本一样

4.2 语法

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

​ 循环体

}

class Demo10 {
    
    
	public static void main(String[] args) {
    
    
		// 使用for循环输出10遍HelloWorld
		for(int i = 0;i < 10;i++){
    
    
			System.out.println("Hello World!" + i);
		}
		System.out.println("OVER!");
	}
}

4.3 for循环详解

for(int i = 0;i < 5;i++){
	System.out.println("Hello World!" + i);
}
System.out.println("OVER!");

执行过程
第一次
	初始化变量int i = 0,判断i < 5,判断结果true,执行for循环中的循环体
第二次
	执行循环条件控制代码i++,i变成1,判断i < 5,判断结果true,执行for循环中的循环体
第三次
	执行循环条件控制代码i++,i变成2,判断i < 5,判断结果true,执行for循环中的循环体
第四次
	执行循环条件控制代码i++,i变成3,判断i < 5,判断结果true,执行for循环中的循环体
第五次
	执行循环条件控制代码i++,i变成4,判断i < 5,判断结果true,执行for循环中的循环体

第六次
	执行循环条件控制代码i++,i变成5,判断i < 5,判断结果false,不执行for循环中的循环体,循环结束

4.4 for循环计算累加的结果

class Demo11 {
    
    
	public static void main(String[] args) {
    
    
		// 计算0--100累加的结果
		int sum = 0;

		for(int i = 0;i<=100;i++){
    
    
			sum += i;
		}
		System.out.println("Hello World!" + sum);

		// 计算0--100奇数累加的结果
		sum = 0;
		for(int i = 0;i<=100;i++){
    
    
			// 找出奇数进行累加
			if(i % 2 != 0){
    
    
				sum += i;
			}
		}
		System.out.println("Hello World!" + sum);

		sum = 0;
		for(int i = 1;i <= 100;i += 2){
    
    
			// 找出奇数进行累加
			sum += i;
		}
		System.out.println("Hello World!" + sum);
	}
}

4.5 输出闰年

class Demo12 {
    
    
	public static void main(String[] args) {
    
    
		// 输出1000-2000年之间的闰年,4个一行
		int count = 0;
		for(int i = 1000;i <= 2000;i++){
    
    
			// 计算闰年
			/*
				普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004、2020年就是闰年);
				世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);
			*/

			if(((i%4==0) && (i%100!=0)) || (i%400==0)){
    
    
				System.out.print(i + "\t");
				// 计数器加一
				count++;
				// 判断是不是到了4
				if(count % 4 == 0){
    
    
					System.out.println();
				}
			}
		}
		System.out.println("Hello World!");
	}
}

4.6 输出水仙花数

class Demo13 {
    
    
	public static void main(String[] args) {
    
    
		// for循环输出水仙花数
		for(int i = 100;i < 1000;i++){
    
    
			// 计算水仙花数字
			// 获取个位十位百位
			int ge = i % 10;
			int shi = i / 10 % 10;
			int bai = i / 100;

			int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;

			// 判断sum和i是否相等
			if(sum == i){
    
    
				System.out.println(i);
			}
		}
		System.out.println("Hello World!");
	}
}

4.7 for循环计算阶乘

import java.util.Scanner;
class Demo14 {
    
    
	public static void main(String[] args) {
    
    
		// 键盘录入一个数字,计算它的阶乘

		/*
			1、导入Scanner
			2、创建Scanner对象
			3、提示输入一个数字
			4、获取输入的数字
			5、编写循环,从1开始,到num结束
			6、在循环中不断计算乘积
			7、循环结束后输出结果
		*/
		Scanner in = new Scanner(System.in);

		System.out.println("你想计算到几的阶乘?");
		int num = in.nextInt();

		int mul = 1;

		// 开启循环
		for(int i = 1;i <= num;i++){
    
    
			mul *= i;
		}

		System.out.println("num阶乘的结果是:" + mul);
	}
}

4.8 统计学生平均分

import java.util.Scanner;
class Demo15 {
    
    
	public static void main(String[] args) {
    
    
		// 输入五个同学的分数,计算平均分

		/*
			1、导入Scanner
			2、创建Scanner对象
			3、开启循环,执行5次
				a、提示输入第一个同学的分数
				b、获取第一个同学的分数
				c、累加这个分数
			4、在循环外计算平均分
			5、输出平均分数
		*/
		Scanner in = new Scanner(System.in);
		
		// 记录总分数
		int scores = 0;
		for(int i = 0;i < 5;i++){
    
    
			System.out.println("请输入第" + (i+1) + "个同学的分数:");
			int score = in.nextInt();
			scores += score;
		}
		
		// 计算平均分
		System.out.println("五个同学的平均分数:" + (scores/5.0));
	}
}

五、循环中流程控制

5.1 break

  • 终止循环的执行

    class Demo16 {
          
          
    	public static void main(String[] args) {
          
          
    		// break的使用
    		int i = 0;
    		while(i <= 100){
          
          
    			System.out.println("Hello World!" + i);
    
    			// 在执行到i==66的时候停止运行
    			if(i == 66){
          
          
    				// 使用break终止循环的执行
    				break;
    			}
    			i++;
    		}
    		System.out.println("Hello World!");
    	}
    }
    
    

5.2 continue

  • 跳过本轮循环后面的内容,进入到下一轮循环的执行
class Demo17 {
    
    
	public static void main(String[] args) {
    
    
		// continue
		int i = 1;
		while(i <= 20){
    
    
			// 输出所有的奇数
			if(i % 2 != 0){
    
    
				System.out.println(i);
			}
			i++;
		}
		System.out.println("Hello World!001");

		i = 1;
		while(i <= 20){
    
    
			System.out.println(i);
			i += 2;
		}
		System.out.println("Hello World!002");

		i = 0;
		while(i <= 20){
    
    
			// 判断:如果是偶数,下面的内容就跳过
			i++;
			if(i % 2 == 0){
    
    
				continue;
			}
			System.out.println(i);
		}
		System.out.println("Hello World!003");
	}
}

六、常量

  • 字面值常量
    • 比如1 、2 、 3
    • 比如"hello" “world”
    • 比如’a’ ‘b’
  • 自定义常量
    • 在生产过程中需要定义一些不能被改变的数值
      • 主机地址
      • 数据库连接时候用到的用户名和密码
      • 端口号
      • 定义的方式
        • 所有的字母大写,多个字母使用下划线连接

七、关键字

  • java关键字是被java语言赋予了特殊含义的标识符
  • class void public static while if else for switch case default break continue…

猜你喜欢

转载自blog.csdn.net/weixin_44883908/article/details/114277101