Java基础---循环结构

Java基础—循环结构(二)—多重循环

前言:利用之前讲的单重循环就已经能解决遇到的很多问题了,但是为什么要使用多重循环呢?当然是,遇到的问题单重循环解决不了,才利用多重循环。

【例如:如何利用之前讲过的循环结构输出下面的图形】
在这里插入图片描述
可能第一个可以做,但是第二个就比较费劲了,第三个直接放弃!!!

所以,我们为了更好地解决这类位问题,学习多重循环是必不可少的。

什么是多重循环

在这里插入图片描述

重点

在这里插入图片描述

像上面所描述的就是多重循环的基本结构,当然也可以3层,4层等等。但是,建议不要超过3层,因为超过3层,程序执行效率会大大降低。

但是,如果我们想跳出循环呢?

前一章我们讲过break,其实还有continuereturn
在这里插入图片描述
在这里插入图片描述

多重循环的例子

一、首先把一开始的两个图形利用多重循环做一下
//平行四边形
 for (int i = 0; i <5 ; i++) {						//控制行数
            for (int k = 0; k <4-i ; k++) {			//列-空格
                System.out.print(" ");
            }
            for (int j = 0; j < 5; j++) {			//列-*
                System.out.print("*");
            }
            System.out.println();
 }
//金字塔
System.out.println("请输入你要几行");          	  //输出数字金字塔
        int n = new Scanner(System.in).nextInt();
        for(int i =1;i<=n;i++){                   //外层循环控制行数,内层循环控制列
            for(int j=1;j<=n-i;j++){              //空格
                System.out.print(" ");
            }
            for(int k=1;k<=2*i-1;k++){            //输出内容
                System.out.print("*");			  //其实这里的 * 可以改成 i,你们可以试一下哦
            }
            System.out.print("\n");
  }
//圣诞树--其实就只在金子塔的基础上加了奇偶判断
System.out.println("请输入你要几行");          		  //圣诞树(上面的加入奇偶行判断)
        int n = new Scanner(System.in).nextInt();
        for(int i =1;i<=n;i++){                       //外层循环控制行数
            for(int j=1;j<=n-i;j++){                  //空格
                System.out.print(" ");
            }
            if(i%2==0){
                for(int k=1;k<=2*i-1;k++){            //输出内容
                    System.out.print("~");
                }
            }else {
                for(int k=1;k<=2*i-1;k++){            //输出内容
                    System.out.print("*");
                }
            }
            System.out.print("\n");
  }

结果如图所示
在这里插入图片描述

二、其次把多重循环的经典问题做一下

1.素数

//输出2-100之间的素数
for (int i = 2; i <=100 ; i++) {			//外层循环2-100
            int tag = 0;					//标记是否为素数
            for (int j = 2; j <i ; j++) {	//内层循环从2到自生
                if(i%j==0){					//判断是否为素数
                    break;
                }else {
                    tag = 1;
                }
            }
            if(tag==1){
                System.out.print(i+"\t");
         	 }
 }

在这里插入图片描述
【提示:这里输出格式有点丑,不急,等我们学完下一章就可以实现按每行多少个进行输出了!】
2. 9*9 乘法表

//9*9乘法表
for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
 }

在这里插入图片描述

另一种格式的 9*9乘法表

for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9-i; j++) {
                System.out.print("\t\t");		//为了美观这里格式不要出
            }
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
 }

在这里插入图片描述
大家可以看看两者之间的差别。

3.回文数

//回文数
System.out.println("请输出一个数,判断它是否为回文数");
        int x = new Scanner(System.in).nextInt();
        if (x < 0) {
            System.out.println(false);
        }
        int reverse = 0;
        int number = x;
        while (number != 0) {
            int temp = number % 10;		//取最后一个数
            number /= 10;				//去掉最后一位
            reverse = reverse * 10;		//低位变高位
            reverse += temp;			//形成相反的数
        }
System.out.println(reverse==x);			//比较反转前后,相同则是回文数

结果如图显示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43288259/article/details/112499460