【JavaSE】-5-嵌套循环

回顾

一、java语言特点

二、配置java环境 path

三、记事本 javac -d . java 包名.类名

四、eclipse

五、变量 定义变量 数据类型 变量名=值;

六、相关的数据类型

​ 基本(四类 、8种)、引用

​ 类型转换(自动、强制)

​ 运算符(算术 ++ --、逻辑 && & || |、比较、三元 )

​ 三目:变量 = 表达式一 ? 表达式二 :表达式三

七、变量名的命名规则

八:顺序结构

九:选择结构

​ if(){} if(){}else if(){}else if(){} if()else{}

​ switch(表达式){} byte short int char enum string

十、循环结构

for

for(变量初始化;控制循环条件;变量的递增或者递减){
	循环体;
}
第一次循环:
	变量初始化;(只执行一次)
	控制循环条件
	循环体
	变量的递增或者递减
第二次运行、第三次....
	控制循环条件
	循环体
	变量的递增或者递减

int i = 1;
for(;;){
	if(i++>=5){
		break;
	}
}

当明确循环次数的情况下,使用for循环。如果不确定循环次数,就选择while循环。

开发过程中,基本使用for循环。

while

先判断、再执行。

while(条件){
	循环体;
}
外部;

示例1:

//		通过while循环打印10遍"Hello World"
		int i = 1;
		while(i++ <= 10) {
			System.out.println("hello world!");
//			i++;
		}

示例2:

//		需求:限定用户输入内容。
//		提示用户输入1~7(含1和7)之间的数字。
//		如果用户输入的数字范围不在1~7之内,
//		让用户重新输入,直到用户输入的数字符合要求。
		Scanner sc = new Scanner(System.in);
		
//		System.out.println("请输入1-7之间的数字:");
//		int num = sc.nextInt();	
//		while(num<1 || num>7) {
//			System.out.println("请输入1-7之间的数字:");
//			num = sc.nextInt();
//		}
		
//		int num = 0;
//		do {
//			System.out.println("请输入1-7之间的数字:");
//			num = sc.nextInt();
//		}while(num<1 || num>7);
		
		int num = 0;
		while(num<1 || num>7) {
			System.out.println("请输入1-7之间的数字:");
			num = sc.nextInt();
		}
int num = 0;  //变量初始化  表达式一
		while(num<1 || num>7) {//控制循环条件  表达式二
			System.out.println("请输入1-7之间的数字:");
			num = sc.nextInt();//控制值的变化--递增、递减   表达式三
		}
		
for(表达式一;表达式一;表达式一){

}

do…while

先执行一次,再判断。至少执行一次循环体。

do{
	循环体;
}while(条件);

示例:

//		需求:生成2个[10, 20]之间的随机数,
//		如果生成的2个数不相等,
//		再重新生成,直到2个数相等。
		
		Random r = new Random();
		//r.nextInt(max-min+1)+min
		int num1 = 0;
		int num2 = 0;
		do {
			 num1 = r.nextInt(11)+10;
			 num2 = r.nextInt(11)+10;
			 System.out.println(num1+"======="+num2);
		}while(num1 != num2);
//		输入一个整数,判断是几位数。
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		// 1/10=0  12/10/10  123/10/10/10 12345/10/10/10/10/10=0
		int num2 = num;
		int count = 0;
		do {
			num /= 10;
			count++;
		}while(num!=0);
		
		System.out.println(num2+"的位数是:"+count);

需求:输入一个整数,判断是几位数。

需求:世界上最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如有一张足够大的纸,它的厚度是0.1毫米。请问折叠多少次,可以折成珠穆朗玛峰的高度?

需求:生成2个[10, 20]之间的随机数,如果生成的2个数不相等,再重新生成,直到2个数相等。

需求:如果你是一个富二代,你有10亿元(1000000000),每天花一半,多天可以花完。

需求:在控制台打印出所有的水仙花数。水仙花数:是一个三位数,水仙花数的个位、十位、百位数字的立方之和等于原数。

//		需求:输入一个整数,判断是几位数。  102233/10/10/10/10
//
//		需求:世界上最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),
//		假如有一张足够大的纸,它的厚度是0.1毫米。
//		请问折叠多少次,可以折成珠穆朗玛峰的高度?
		//0.1  0.2  0.4  0.8
		double height = 0.1;
		int count = 0;
		do {
			height *= 2;
			count++;
		}while(height <= 8844430);
		System.out.println(count);
		
//		需求:生成2个[10, 20]之间的随机数,如果生成的2个数不相等,再重新生成,直到2个数相等。
		int num1 = 0;
		int num2 = 0;
		Random r = new Random(); 
		do {
			num1 = r.nextInt(11)+10;
			num2 = r.nextInt(11)+10;
			System.out.println(num1+"---"+num2);
		}while(num1 != num2);
		
//		需求:如果你是一个富二代,你有10亿元(1000000000),每天花一半,多天可以花完。
		//1000000000  /2  500000000     0
		int num = 1000000000;
		int days = 1;
		while((num/=2) !=0 ) {
			days++;
		}
		System.out.println(days++);
//		需求:在控制台打印出所有的水仙花数。
//		水仙花数:是一个三位数,水仙花数的个位、十位、百位数字的立方之和等于原数。
		int i = 100;
		while(i<1000) {
			//i 100 个位 十位  百位 
			int a = i/100;
			int b = i/10%10;
			int c = i%10;
			if(a*a*a+b*b*b+c*c*c==i) {
				System.out.println(i+" ");
			}
			i++;
		}
		

break和continue关键字

break: 用于结束循环,用在switch…case结构种,用于结束case语句。

switch(){
	case:
        语句;
        break;
}

for(int i=1;i<10;i++){
	syso(i);//break前
	break;
	syso(i);//break前  编译不通过
}

boolean flag = true;
Scanner sc = new Scanner(System.in);
while(flag){
	int num = sc.nextInt();
	 if(num == 10){
	 	flag = false;
	 }
}

while(true){
     if(num == 10){
	 	break;
        syso();//编译报错
	 }
}


do{
    if(){
       	break; 
    }
}while(true);

示例代码:

for(int i=1;i<10;i++) {
    System.out.println(i);
    if(i == 5) {
        break;
    }
    System.out.println("***");
}
System.out.println("for循环外部");
//		用户可以在控制台输入任意字符串,
//		当用户输出字符串是"exit"的时候,
//		认为是结束输出,用户将不能再输入任何内容。
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.print("请输入...");
			String str = sc.next();
			if(str.equalsIgnoreCase("exit")) {
				//退出
				break;
			}
		}

需求:猜数字。产生1个[10, 30]的随机数,从键盘上输入你的猜测结果,如果猜测的数比随机数大,提示"你猜的数据大了",如果猜测的数比随机数小,提示"你猜测的数据小了",如果猜测的数和随机数一样大,提示"恭喜你猜对了",计算出猜了几次才猜对。

Random r = new Random();
Scanner sc = new Scanner(System.in);
int count = 0;
do {
    int num1 = r.nextInt(21)+10;
    System.out.print("请录入:");
    int num2 = sc.nextInt();
    count++;
    if(num1>num2) {
        System.out.println("随机数是:"+num1+"猜小了!");
    }else if(num1<num2) {
        System.out.println("随机数是:"+num1+"猜大了!");
    }else {
        System.out.println("随机数是:"+num1+"猜对了!");
        break;
    }
}while(true);
System.out.println("一共猜了"+count+"次!");

continue只是结束本次循环,而不是结束整个循环。continue通常情况下也是与if语句搭配使用。

for(int i = 1;i<100;i++) {
    if(i % 7 == 0) {
        continue;
    }
    System.out.print(i+" ");
}
System.out.println("----");

break、continue总结

  1. break用于结束当前循环。
  2. continue用于结束本次循环。
  3. break、continue通常是与if语句连用。即某种条件满足时才break或continue。
  4. break使用比较频繁,经常用在死循环里结束循环。或者用在for循环里提前结束循环。
  5. continue很少使用。

嵌套循环

循环嵌套:一个循环作为另外一个循环的循环体或者是循环体的一部分。

for(){ //外层循环
  for(){//内层循环
  
  }
}
while(){
	while(){
	
	}
}

while(){
   for(){
   
   }
}

[
	{
        id:1
        address:[
                {河南郑州},
                {河南信阳}
        	]
	},
	{},
	{}
]

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

System.out.println("1 2 3 4 5 ");
System.out.println("1 2 3 4 5 ");
System.out.println("1 2 3 4 5 ");
..........
for(int i = 0;i<3;i++){
	System.out.println("1 2 3 4 5 ");
}
..........
for(int i = 1;i<=100;i++){
	System.out.print(i+" ");
}
for(int i = 1;i<=100;i++){
	System.out.print(i+" ");
}
for(int i = 1;i<=100;i++){
	System.out.print(i+" ");
}
-----------------
for(int i = 1;i < 4;i++) {//外层循环控制行 行数
    for(int j=1;j<=10;j++) {//内层循环控制列  列数
        System.out.print(j+" ");	//每列的值
    }
    System.out.println();
}

1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 

for(int i=1;i<=1;i++){
	System.out.print(i+" ");
}
System.out.println();

for(int i=1;i<=2;i++){
	System.out.print(i+" ");
}
System.out.println();

for(int i=1;i<=3;i++){
	System.out.print(i+" ");
}
System.out.println();

for(int i=1;i<=4;i++){
	System.out.print(i+" ");
}
System.out.println();
-------------------------------

for(int i=1;i<6;i++){
    for(int j=1;j<=i;j++){
        System.out.print(j+" ");
    }
    System.out.println();
}
--------------------------------
1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 
平面图形  行、列 双层循环
外层循环控制行
内层循环控制列
for(int i=1;i<5;i++){//控制行数
    //第一行 i=1  列数1
    //第二行 i=2  列数2
    //第三行 i=3  列表3
    for(int j=1;j<=i;j++){ //控制列数  
        //内层循环体 打印输出 每列的值
        System.out.print(j+" ");
    }
    System.out.println();
}    
1 2 3 4 5 
1 2 3 4 
1 2 3 
1 2 
1 
for(int i=1;i<=5;i++) {
    for(int j=1;j<=6-i;j++) {
        System.out.print(j+" ");
    }
    System.out.println();
}

for(int i=5;i>=1;i--) {
    for(int j=1;j<=i;j++) {
        System.out.print(j+" ");
    }
    System.out.println();
}

你可能感兴趣的:(JavaSE学习阶段,java)