遇到这种图形,我们可以对图形进行拆分为几个模块,然后根据拆分的图形模块写代码.
首先把这个图形分为上下两部分
一.然后我们再对上半部分进行拆分
仔细观察可以发现,上半部分可分为四个图形模块:
1.我们先分析三角形空格部分:
(1)通过观察,不难发现左边输出空格的规律:
第i行输出的空格:输入的总行数- i.(即第一行输出的空格为:5-1=4个空格,第二行输出为:5-2=3个空格......)
(2)同理右边输出空格的规律:
第i行输出的空格:输入的总行数- i.(即第一行输出为:5-1=4个空格,第二行输出为:5-2=3个空格......)
2.左边数字部分规律,即第i行就输出i个数字.for循环,i=1开始,到i=总行数停止i.即for(i=1;i<=a;i++)//a为输入的总行数.
3.右边数字部分规律,即第i行就输出i个数字,.for循环,i=1开始,到i=总行数停止i.即for(i=1;i<=a;i++)//a为输入的总行数.
分析完后开始编写代码
代码如下:
import java.util.Scanner; public class Test6 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个数:"); int a = input.nextInt(); for(int i = 1;i <= a;i++){//行数 for(int j = a;j >= i-1;j--){//空格 System.out.print(" "); } for(int k = 1;k <= i;k++){//左边数字部分 System.out.print(k); } for(int g = i-1;g >= 1;g--){//右边数字部分 System.out.print(g); } System.out.print("\n"); }
}
}
上半部分结果运行如上
二.同理对下半部分进行分析
下半部分也是分为四个图形模块:
1.我们先分析三角形空格部分:
(1)通过观察,不难发现左边输出空格的规律:
第i行输出的空格:输出i个空格
(2)同理右边输出空格的规律:
第i行输出的空格:输出i个空格
2.左边数字部分规律,第i行输出数字:总行数-i,
3.右边数字部分规律,第i行输出数字:总行数-i,
分析完后开始编写代码
代码如下:
import java.util.Scanner; public class Test6 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个数:"); int a = input.nextInt(); for(int i1 = a-1;i1 >= 1;i1--){//行数 for(int j1 = i1-1;j1 <= a;j1++){//空格 System.out.print(" "); } for(int k = 1;k <= i1;k++){//左边数字 System.out.print(k); } for(int g = i1-1;g >= 1;g--){//右边数字 System.out.print(g); } System.out.print("\n"); } } }
下半部分运行结果如上图
三.对上下两部分代码进行整合,即:
import java.util.Scanner; public class Test6 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个数:"); int a = input.nextInt(); for(int i = 1;i <= a;i++){//行数 for(int j = a;j >= i-1;j--){//空格 System.out.print(" "); } for(int k = 1;k <= i;k++){//左边数字部分 System.out.print(k); } for(int g = i-1;g >= 1;g--){//右边数字部分 System.out.print(g); } System.out.print("\n"); } for(int i1 = a-1;i1 >= 1;i1--){//行数 for(int j1 = i1-1;j1 <= a;j1++){//空格 System.out.print(" "); } for(int k = 1;k <= i1;k++){//左边数字 System.out.print(k); } for(int g = i1-1;g >= 1;g--){//右边数字 System.out.print(g); } System.out.print("\n"); } } }
输出结果如上图