05.24 空心三角形

Problem Description

把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。

Input

每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。

Output

每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。

Sample Input

X 2

A 4

@

Sample Output

  X

XXX


           A

          A      A

      A                A

A  A  A  A  A  A  A

主要就是指定位置输出字符,先单独输出最后一行,再用每一行遍历到(2*line-1)/2+i,需要输入字符的人每一行位置左边是2n-1/2-i;右边2n-1/2+i;因此用绝对值包起来。

代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

  Scanner sc=new Scanner(System.in);

  int m=1;

  while(sc.hasNext()){

  m++;

  String x=sc.nextLine();

  String a[]=x.split(" ");

  char c=a[0].charAt(0);

  if(c=='@'){

  break;

  }

  int line=Integer.parseInt(a[1]);

  if(m>2)

  System.out.println("");//再每一个 新的第一行空一行

  for(int i=0;i<line;i++)//循环每一行

        {

            if(i==line-1)//i等于最后一行

            {

                for(int j=0;j<2*line-1;j++)//输入2*line-1个符号

                {System.out.print(c);}

            }

            else {

                for(int j=0;j<=(2*line-1)/2+i;j++)

                //否则第i行要打印j个字符,当i等于[j-(2*line-1)-1]时

                //即打印的行数与其所在的要打印的字符位置公式相等

            if(i==Math.abs(j-(2*line-1)/2))

            {

                System.out.print(c);

            }

            else

                System.out.print(" ");

            }


            System.out.println();


        }                     

    }

}         

代码截图:

图片发自简书App

运行截图:

图片发自简书App

此题需要明白的一点时,该在什么位置输出什么就能解决✔

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容