发晚了,这是我的思路一
- package test;
- /*
- *
- * *
- * *
- * *
- * * * * *
- 分析图形的规律---每行有 2n-1 个字符
- 考虑一:
- 行1: 4 空格 1星+0个空格 4空格
- 行2: 3 空格 1星+1空格+1空格+1星 3空格
- 行3: 2 空格 1星+2空格+2空格+1星 2空格
- 行4: 1 空格 1星+3空格+3空格+1星 1空格
- 行5: 0 空格 1星+4空格+4空格+1星 0空格
- 二维字符数组 char[n][] chs = new char[]{' ',' ',' ',' ',' ',' ',' ',' ',' '}
- chs[0] = {' ',' ',' ',' ','*',' ',' ',' ',' '} (2n-1)/2- 0
- chs[1] = {' ',' ',' ','*',' ','*',' ',' ',' '} (2n-1)/2- 1 (2n-1)/2 +1
- chs[2] = {' ',' ','*',' ',' ',' ','*',' ',' '} (2n-1)/2- 2 (2n-1)/2 +2
- chs[3] = {' ','*',' ',' ',' ',' ',' ','*',' '} (2n-1)/2- 3 (2n-1)/2 +3
- chs[4] = {'*',' ','*',' ','*',' ','*',' ','*'} (2n-1)/2- 4 (2n-1)/2 +4
-
- */
- public class HollowTriangle {
- public static void printHollow(int n)
- {
- int num = 2*n-1; //共2n-1个字符
- char[][] chs = new char[n][num]; //
-
- //初始化二维数组
- //以第一行标准格式,初始化所有的数组
- for(int i = 0; i<n; i++)
- {
- for(int j = 0; j<num; j++)
- {
- if(j == n-1)
- {
- chs[i][j] = '*';
- }
- else {
- chs[i][j] = ' ';
- }
- }
- }
- //替换空格
- for(int i=1; i<n; i++)
- {
- for(int j=0; j<num; j++)
- {
- //start:n-1-i, 对称点: n-1 end: (2n-1-1)-start= n+i-1
- if(j == n-1-i || j== n+i-1)
- {
- chs[i][j] = '*';
- }
- else {
- chs[i][j] = ' ';
- }
- if(i == n-1)
- {
- if(j%2 == 0)
- chs[i][j] = '*';
- }
- }
- }
- //打印二维数组
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<num; j++)
- {
- System.out.print(chs[i][j]);
- }
- System.out.println();
- }
- }
- public static void main(String[] args) {
- printHollow(7);
- }
- }
复制代码 |