一、打印如下图所示,用循环解决
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(); } } }