首页 > 技术文章 > 循环打印图像

ONE-PIECE-ZXZ 2018-10-15 20:53 原文

 

一、打印如下图所示,用循环解决

    1
     21
      321
    4321
  54321
654321

  1.首先分析问题:首先前面的空白该如何留出:使用一次双重循环,逐行逐列打印空白

    for(int i=1;i<=NUMBER_OF_LINES;i++) {
            
            for(int j=1;j<=NUMBER_OF_LINES-i;j++) {
                System.out.print(" ");  //打印前面的空白
            }
        }

  2. 然后分析如何使数字在每一行中由大到小排列:

1 for(int i=1;i<=NUMBER_OF_LINES;i++) {
2     for(int k=i;k>=1;k--) {//如图,每一行的首数字都等于行数,并且逐列递减1
3          System.out.print(k);//k--对应每次每一列都减1,打印k
4             }
5         }

  3.最后组合输出程序  

 1 package Demo1;
 2 import java.util.Scanner;
 3 public class Demo4 {
 4 
 5     public static void main(String[] args) {
 6         Scanner input = new Scanner(System.in);//输入行数,确定行数
 7         System.out.println("请输入行数:");
 8         
 9         final int NUMBER_OF_LINES = input.nextInt();  
10         
11         for(int i=1;i<=NUMBER_OF_LINES;i++) {
12             
13             for(int j=1;j<=NUMBER_OF_LINES-i;j++) {
14                 System.out.print(" ");  //打印前面的空白
15             }
16             
17             for(int k=i;k>=1;k--) {//如图,每一行的首数字都等于行数,并且逐列递减1
18                 System.out.print(k);//k--对应每次每一列都减1
19             }
20             System.out.println();
21             
22         }
23     }
24     
25 }

 

二、打印如下图:

123456
  12345
    1234
      123
        12
          1

  1.第一步,前面的空白如何留出

 

for(int i=1;i<=NUMBER_OF_LINES;i++) {
for(int k=1;k<=i-1;k++) {//前面所留的空白是第几行-1的空白,即用i=1;k<=i-1表示前面空的行数
System.out.print(" ");
}
System.out.println();
}

  2.如何逐行逐列一次输出呢?

1 for(int i=1;i<=NUMBER_OF_LINES;i++) {
2             for(int j=1;j<=NUMBER_OF_LINES-i+1;j++) {//因为相比较于前行,,每一行的列数都减一,可以表示为输入处于+1
3                 System.out.print(j+"");//然后输出
4             }
5         }

  3. 最后组合程序输出

 1 package Demo1;
 2 import java.util.Scanner;
 3 public class Demo2 {
 4 
 5     public static void main(String[] args) {
 6         Scanner input = new Scanner(System.in);
 7         System.out.println("请输入行数");
 8         final int NUMBER_OF_LINES = input.nextInt();
 9         
10         for(int i=1;i<=NUMBER_OF_LINES;i++) {
11             for(int k=1;k<=i-1;k++) {
12                 System.out.print(" ");
13             }
14             
15             for(int j=1;j<=NUMBER_OF_LINES-i+1;j++) {
16                 System.out.print(j+"");
17             }
18             System.out.println();
19         }
20     }
21 }

 

三、如下图所示:

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

  1. 跟第二个程序相比,这也是每一行都减一个列,

  归纳为语法为:

for(int j=1;j<=NUMBER_OF_LINES-i+1;j++)//列的动作

  2.最终程序组合为:

package Demo1;

public class Demo1 {

    public static void main(String[] args) {
        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.println("请输入行数:");
        final int NUMBER_OF_LINES = input.nextInt();
        
        for(int i=1;i<=NUMBER_OF_LINES;i++) {
            for(int j=1;j<=NUMBER_OF_LINES-i+1;j++) {
                System.out.print(j+" ");
            }
            System.out.println();
        }
    }
}

 

四、输出等腰三角形

方法一:

 1 package Demo2;
 2 
 3 public class Demo2 {
 4     
 5     public static void main(String[] args) {
 6     java.util.Scanner input = new java.util.Scanner(System.in);
 7     System.out.println("请输入行数:");
 8     final int NUMBER_OF_LINE = input.nextInt();
 9     
10     for(int i=1;i<=NUMBER_OF_LINE;i++) {
11         
12         for(int j=1;j<=NUMBER_OF_LINE-i;j++) {
13             System.out.print(" ");
14         }
15         
16         for(int k=1;k<=i;k++) {
17             System.out.print("* ");
18         }
19 
20          
21         System.out.println();
22     }
23     }
24 }

方法二:

package Demo2;

public class Demo1 {

    public static void main(String[] args) {
        
        for(int i=1;i<=10;i++) {//控制行
            
            for(int j=1;j<=10-i;j++) {
                System.out.print(" ");//控制空格
            }
            
            for(int k=1;k<=2*i-1;k++) {//形成等差数列
                System.out.print("*");
            }
            
            System.out.println();
        }
        
        
    }
}

 

推荐阅读