JAVA基础6:循环语句

1.循环结构

1)特征

重复做某件事

具有明确的开始和停止标志

2)组成

初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样

条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去

循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情

条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环能否执行下去

3)语法

初始化语句:这里可以是一条或者多条语句,这些语句可以完成一些初始化操作

条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体。例如:a>10

循环体语句:这里可以是任意语句,这些语句将反复执行

条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果。常见i++等这样的操作

2.for循环语句

1)格式

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

        循环体语句;

}

2)执行流程

①执行初始化语句

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

        如果是false,循环结束

        如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

/*
	for语句
	
*/
public class ForDemo{
	public static void main(String[] args){
		//需求:在控制台输出5次"麦仓分享”
		System.out.println("麦仓分享");
		System.out.println("麦仓分享");
		System.out.println("麦仓分享");
		System.out.println("麦仓分享");
		System.out.println("麦仓分享");
		System.out.println("---------------");
		
		//用循环体改进
		for(int i = 1;i <= 5; i++){
			System.out.println("麦仓分享");
		}
	}
}

3)案例:在控制台输出1-5和5-1

/*
	输出数据
	需求:
		在控制台输出1-5和5-1
	
*/
public class ForDemo{
	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);
		}
	}
}

4)案例:1-5之间的数求和

/*
	输出数据
	需求:
		求1-5之间的数据和,并把求和结果在控制台输出
	
*/
public class ForDemo{
	public static void main(String[] args){
		int sum = 0;
		for(int i = 1; i <= 5; i++){
			sum += i;
		}
		System.out.println("求1-5之间的数据和:" + sum);
	}
}

5)案例:求偶数和

/*
	输出数据
	需求:
		求1-100之间的偶数和,并把求和结果在控制台输出
	
*/
public class ForDemo{
	public static void main(String[] args){
		int sum = 0;
		for(int i = 1; i <= 100; i++){
			if(i%2 == 0){
				sum += i;
			}
		}
		System.out.println("求1-100之间的偶数和:" + sum);
	}
}

6)案例:求水仙花

什么是“水仙花数”?

①水仙花数是一个三位数

②水仙花数的个位、十位、百位的数字立方和等于原数

/*
	输出数据
	需求:
		 在控制台输出所有的“水仙花数”
	
*/
public class ForDemo{
	public static void main(String[] args){
		for(int i = 100; i <= 999; i++){
			int ge = i %10;
			int shi = i / 10 % 10;
			int bai = i / 10 / 10 %10; 
            //N位数中第m个的值:i/(10^m)%10
			if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
				System.out.println(i);
			}
		}
		
	}
}

7)案例:统计“水仙花”个数

/*
	输出数据
	需求:
		 统计“水仙花”一共有多少个,并在控制台输出个数。
	
*/
public class ForDemo{
	public static void main(String[] args){
		int count = 0;
		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){
				count ++;
			}
		}
		System.out.println("“水仙花”一共有" + count + "个");
		
	}
}

3.while循环语句

1)格式

基本格式:

while(条件判断语句){

        循环体语句;

}

完整格式:

初始化语句;

while(条件判断语句){

        循环体语句;

        条件控制语句;

}

2)执行流程:

①执行初始化语句

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

        如果是false,循环结束

        如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

/*
	输出数据
	需求:
		 在控制台输出5次“麦仓分享”
	
*/
public class WhileDemo{
	public static void main(String[] args){
		//for循环实现
		for(int i = 0;i < 5;i++){
			System.out.println("“麦仓分享");
		}
		System.out.println("---------------------");
        //while循环实现
		int i = 0;
		while(i < 5){
			System.out.println("“麦仓分享");
			i++;
		}
	}
}

3)案例:珠穆朗玛峰

/*
	输出数据
	需求:
		 世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,
		 请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
	
*/
public class WhileDemo{
	public static void main(String[] args){
		double paper = 0.1;
		int count = 0;
		while(paper <= 8844430){
			paper *=2;
			count++;
		}
		System.out.println("需要折叠:" + count + "次");
	}
}

4.do...while循环语句

1)格式

基本格式:

do{

        循环体语句;

}while(条件判断语句);

完整格式:

初始化语句;

do{

        循环体语句;

        条件控制语句;

}while(条件判断语句);

2)执行流程:

①执行初始化语句

②执行循环体语句

③执行条件控制语句

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

        如果是false,循环结束

        如果是true,继续执行

⑤回到②继续

/*
	输出数据
	需求:
		 在控制台输出5次“麦仓分享”
	
*/
public class DoWhileDemo{
	public static void main(String[] args){
		int i = 1;
		do{
			System.out.println("麦仓分享");
			i++;
		}while(i <= 5);
		
	}
}

5.三种循环的区别

三种循环的区别:

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
  • do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

for和while的区别:

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

死循环格式:

for(;;){}

while(true){}

do{}while(true);

while的死循环格式是最常用的

命令提示符窗口中Ctrl + C 可以结束死循环

6.跳转控制语句

终止循环体内容的执行

break

注意:使用是基于条件控制的

  • continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
  • break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
/*
	continue 和 break 用法
*/
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);
		}
	}
}

7.循环嵌套

任何语句对外都可以看成是一句话,一句代码

分支语句中包含分支语句称为分支嵌套

循环语句中包含循环语句称为循环嵌套

/*
	循环嵌套:
		循环语句中包含循环语句
	需求:
		在控制台输出一天的小时和分钟
		
		分钟和小时的范围:
			分钟:0 <= minute < 60
			小时:0 <= hour <24
*/
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("-----------------------");
		}
	}
}

8.Random

1)作用

用于产生一个随机数

2)使用步骤

①导包

import java.util.Random;

导包的动作必须出现在类定义的上面

②创建对象

Random r = new Random();

上面这个格式里面,r是变量名,可以变,其他的都不允许变

③获取随机数

int number = r.nextInt(10);//获取数据的范围:[0,10)包括0,不包括10

上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变

/*
	Random
*/
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);
		}
		System.out.println("-----------------------------");
		//需求:获取一个1-100之间的随机数
		int x = r.nextInt(100) + 1;
		System.out.println(x);
		
	}
}

3)案例:猜数字

/*
	猜数字
	需求:
		程序自动生成一个1-100之间的树脂基,使用程序实现猜出这个数字是多少?
		当猜错的时候根据不同情况给出相应的提示
		
		如果猜的数字比真实数字大,提示你猜的数据大了
		如果猜的数字比真实数字小,提示你猜的数据小了
		如果猜的数字与真实数字相等,提示恭喜你猜中了
*/
import java.util.Random;
import java.util.Scanner;
public class RandomTest{
	public static void main(String[] args){
		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(guessNumber > number){
				System.out.println("你猜的数字大了!");
			}else if(guessNumber < number){
				System.out.println("你猜的数字小了!");
			}else{
				System.out.println("恭喜您,猜中了!");
				break;
			}
		}
		System.out.println("-----------------------------");
	}
}

你可能感兴趣的:(Java,java,python,开发语言)