java学习之多重循环控制

        java的多重循环对于初学者来说是容易让人懵圈的,像多重循环的问题,都应该有一个比较清晰的逻辑思维,下面就以金字塔问题为例。

一、多重循环控制介绍

         将一个循环体放在另一个循环体内,就形成了嵌套循环。其中,for,while,do..while均可以作为外层嵌套循环和内层循环。实质上,嵌套循环就是把内层循环当成外层循环的循环体。只有当内层循环的结果为false时,才会跳出内层循环,才可以结束外层的当前循环,开始下一轮的循环。假设外层循环次数为m次,内层循环次数为n次,则内层循环体实际上需要执行m*n次。

二、金字塔

1.代码

import java.util.Scanner;
public class Stars{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入你想要的金字塔层数: ");
		int totalLevel = scanner.nextInt();
		for (int i=1;i<=totalLevel;i++){ //i表示空心菱形上半部分行数;类似于金字塔行数
               for (int k=1;k<=totalLevel-i;k++) {//k表示每行"*"号前面的空格数
                System.out.print(" ");
            }
            for (int j=1;j<=2*i-1;j++){ //j表示每行要打印的"*"号
                    System.out.print("*");
            }
            System.out.print("");
        }
    }
}

2.运行结果

 三、空心金字塔

1.代码

import java.util.Scanner;
public class Stars{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入你想要的金字塔层数: ");
		int totalLevel = scanner.nextInt();
		for (int i = 1;i<=totalLevel ;i++ ) {//i表示空心菱形上半部分行数;类似于金字塔行数
			for (int k=1;k<=totalLevel-i ;k++ ) {//k表示每行"*"号前面的空格数
				System.out.print(" ");
			}
			for (int j = 1 ;j<=2*i-1 ;j++ ) {//j表示每行要打印的"*"号
				//当前行的第一个位置和最后一个位置都是*,最后一层全是*
				if (j==1 || j==2*i-1 || i == totalLevel ) {
					System.out.print("*");
				}else {
					System.out.print(" ");
				}
		}
		System.out.println("");
		}
    }
}

2.运行结果

      

 附:四、空心菱形

1.代码

import java.util.Scanner;
public class Stars{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入你想要的金字塔层数: ");
		int totalLevel = scanner.nextInt();
		for (int i = 1;i<=totalLevel ;i++ ) {//i表示空心菱形上半部分行数;类似于金字塔行数
			for (int k=1;k<=totalLevel-i ;k++ ) {//k表示每行"*"号前面的空格数
				System.out.print(" ");
			}
			for (int j = 1 ;j<=2*i-1 ;j++ ) {//j表示每行要打印的"*"号
				//当前行的第一个位置和最后一个位置都是*,最后一层全是*
				if (j==1 || j==2*i-1) {
					System.out.print("*");
				}else {
					System.out.print(" ");
				}
		}
		System.out.println("");
		}
		for(int i=1;i<=totalLevel-1;i++){//空心菱形下半部分的行数为totalLevel-1行;比如上半部分4行,则下半部分为3行才能构成菱形
			for(int k=1;k<=i;k++){
				System.out.print(" ");
			}
			for (int j=1;j<=2*(totalLevel-i) ;j++ ) {//下半部分每行总的"*"数
				  if (j==1||j==2*(totalLevel-i)-1) //如果"*"处在第一和最后一位则打印出来
                {
                    System.out.print("*");
                }else
                    System.out.print(" "); //如果"*"不是处在第一和最后一位则打印出空格
            }
            System.out.println();   
		}
    }
}

2.运行结果

 注意事项:多重循环控制一般使用两层,最多不超过三层,否则代码可读性变差。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值