在控制台打印三角形

在控制台打印三角形_第1张图片
triangle.png

要在控制台打印出入上图的三角形,我们假设坐标系为:横向为r(row)轴,向右为正;纵向为c轴(cols)轴,向下为正。我们打印的*号填成的三角形为△ABC。A点的坐标为(15,1),B点的坐标为(9,7),C点的坐标为(21,7)。直线AB的斜率为:

mAB

同理,直线AC的斜率为:

mAC

所以,直线AB的方程为:

LAB

同理,直线AC的方程为:

LAC

同理,直线BC的方程为:r=7。

因此我们打印*号的位置(r,c)应满足:

condition

编码

public class Triangle{
  public static void main(String[] args){
    for(int r=1;r<=7;r++){ // r<=7才打印
        for(int c=1;c<=30;c++){//打印列的范围为[1,30]
            if((r+c)>16&&(r-c)>-16){ //如果r,c满足落在直线AB和直线AC围成的范围内,则打印*
                System.out.print("*");
            }else{ // 否则打印空格
                System.out.print(" ");
            }
        }
        System.out.println();//打印完一行后,换行
    }
  }
}

输出:

在控制台打印三角形_第2张图片
triangle_code.png

总结

打印这样的三角形,r和c总是满足r+c>n并且r-c>-n,其中n为任意整数。r控制打印的行数,范围可以是[1,n]之间的任意整数;c控制打印的列数,范围可以是[1,2n]之间的任意整数。例如,如果将上面r的范围变为[1,16],c的范围变为[1,32],则会产生如下的输出:

在控制台打印三角形_第3张图片
triangle_code2.png

相信聪明如你,应该找到了其中的规律!!!O(∩_∩)O~~

你可能感兴趣的:(在控制台打印三角形)