java学习之二重循环

概念:嵌套循环

语法:

for(循环变量声明和初始化 1;循环条件 2;循环变量的变化 3){
    语句块 4;
    for(循环变量声明和初始化 5;循环条件 6;循环变量的变化 7){
        
		循环体(语句块) 8;
        
	}
    
    语句块 9;
}


/**
	1、循环变量声明和初始化      数字变量int i,初始化0,1;		N
	2、循环条件                i<[=]N;i>=0,1
	3、循环变量的变化           i++,i+=N,i--,i-=x
	4、循环体(语句块)           根据经验找【规律】
*/
/**
	使用循环解决问题的步骤
	1、审题确认重复是否存在(经验:唯有练习)
	2、设计四要素并套用循环语法
	3、检查循环是否正常结束
*/


练习

双层循环求水仙花数

public static void main(String[] args) {
        //找出所有三位数的水仙花数
        for (int i = 100,sum; i < 1000; i++) {  //sum要使用很多次
            sum = 0;                            //在此定义int sum = 0;就要被执行很多次;
            for (int copy = i; copy >= 1; copy/=10) {
                sum += Math.pow(copy%10,3);
            }
            if(sum==i){
                System.out.println(i);
            }
        }
}

倒立直角三角形的对称图形输出

public static void main(String[] args) {
        for (int row = 1; row <= 9 ; row++) {
            for (int col = 1; col < row; col++) {
                System.out.print(" ");
            }

            for (int col = 1; col <= 10-row ; col++) {
                System.out.print("#");
            }
            System.out.println();
        }

}

结果

输出等腰三角形

public static void main(String[] args) {
        for (int row = 1; row <= 9; row++) {
            for (int cols = 1; cols <= 9-row; cols++) {
                System.out.print(" ");
            }
            for (int col = 1; col <= 2*row-1; col++) {
                System.out.print("#");
            }
            System.out.println();
        }

}

输出倒立等腰三角形

public static void main(String[] args) {
        for (int row = 1; row <= 9; row++) {
            for (int col = 1; col <= row - 1; col++) {
                System.out.print(" ");
            }

            for (int col = 1; col <= 2 * (9 - row) + 1; col++) {
                System.out.print("#");
            }
            System.out.println();
        }
}

输出空心等腰三角形

public static void main(String[] args) {
        for (int i = 1,t; i <=9 ; i++) {
            for (int j = 1; j <=9-i ; j++) {
                System.out.print(" ");
            }
            t=2*i-1;              //第一列#排好后,第二列#分别在它第一个数的第3,5,7,9...位置上
            for (int j = 1; j <=t ; j++) {
                if (i==1||i==9||j==1||j==t){
                    System.out.print("#");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

 

输出倒立空心等腰三角形

//空心三角形
public static void main(String[] args) {
    for (int i = 1,t; i <=9 ; i++) {
        for (int j = 1; j <=i-1 ; j++) {
            System.out.print(" ");
        }
        t = 2*(9-i)+1;
        //i=9,t=1;i=8,t=3;i=1,t=17 t为下一个#所在的位置(从第一个#开始数到第几个)
        for (int j = 1; j <= 2*(9-i)+1; j++) {
            if (i==1||j==1||i==9||j==t){
                System.out.print("#");
            }else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}

输出菱形

//全局法
public static void main(String[] args) {
        for (int i = -4; i <=4 ; i++) {    //上(+4行)下(-4行),中间行为0
            for (int j = 1; j <= Math.abs(i) ; j++) {
                System.out.print(" ");       //这样第几行就有几个空格了,看结果图分析
            }
            for (int j = 1; j <=9-2*Math.abs(i) ; j++) {  
                System.out.print("#");
            }
            System.out.println();
        }

}

//2个等腰三角形相加法
public static void main(String[] args) {
    for (int i = 1; i <=5 ; i++) {
        for (int j = 1; j <=5-i; j++) {
            System.out.print(" ");
        }
        for (int j = 1; j <=2*i-1 ; j++) {
            System.out.print("#");
        }
        System.out.println();
    }

    for (int i = 1; i <=4 ; i++) {
        for (int j = 1; j <=i ; j++) { //i=1,前面有1个空格,i=2,前面有2个空格...,看图分析
            System.out.print(" ");
        }
        for (int j = 1; j <=2*(4-i)+1 ; j++) { //此时第一行7个,第二行5个,第三行3个,推规律
            System.out.print("#");
       }
       System.out.println();
   }   
}

输出掏空菱形

//掏空菱形
public static void main(String[] args) {
    for (int i = -4; i <=4 ; i++) {       //此i=-4是图第一行,i=4是最后一行
        for (int j = -4; j <= 4; j++) {   //此j=-4是图第一列,i=4是最后一列
            if (Math.abs(j)<4-Math.abs(i) ){ //j第3列,i=0,1,2行全是空格
                System.out.print(" ");
            }else{
                System.out.print("#");
            }
        }
        System.out.println();
    }
}

输出一个沙漏图形

//全局法
public static void main(String[] args) {
    for (int i = -4; i <=4 ; i++) {    //上(+4行)下(-4行),中间行为0
        int abs = Math.abs(i);
        for (int j = 1; j <= 4 - abs; j++) { //第4行0空格,第3行1空格,第0行4空格
            System.out.print(" ");
        }
        //先想象不看前空格的图形,计算每行有多少个#,推规律.第0行1个,第4行9个...
        for (int j = 1; j <= 2 * abs + 1; j++) {
            System.out.print("#");
        }
        System.out.println();
    }
}
//叠加法
//沙漏
public static void main(String[] args) {
    for (int i = 1; i <=5 ; i++) {
        for (int j = 1; j <=i ; j++) {
            System.out.print(" ");
        }
        for (int j = 1; j <=2*(5-i)+1 ; j++) {
            System.out.print("#");
        }
        System.out.println();
    }

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

 输出一个空心沙漏

public static void main(String[] args) {
    for (int i = -4,t; i <=4 ; i++) {
        int abs = Math.abs(i);
        for (int j = 1; j <=4-abs ; j++) {
            System.out.print(" ");
        }
        t=2*abs+1;                          //t是另一个#的位置计数
        for (int j = 1; j <=2*abs+1 ; j++) {
            if(abs==4 ||j==1||j==t){        //第4行,第1列,另一个t在的列
                System.out.print("#");
            }else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}

 输出掏空沙漏

//掏空沙漏
public static void main(String[] args) {
    for (int i = -4; i <= 4; i++) {
        for (int j = -4; j <= 4; j++) {
            if (Math.abs(j) > Math.abs(i) || Math.abs(i) == 4) {
                System.out.print("#");
            } else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值