Java打印一个棱形跟等腰三角形


行数 *数

5 5 由于每行*数差值是2,因此得到个固定值必须加2倍行数,上图固定值是15
6 3   下面代码中输出了9行,可以推算出固定值为19
7 1

先来段VB6的打印菱形

Dim i As Integer
For i = 1 To 9
    If i > 5 Then
        Print Space(i - 4); String(19 - 2 * i, "*")
    Else
        Print Space(6 - i); String(2 * i - 1, "*")
    End If
Next i
再来Java版的:
public class demo2 {
    public static void main(String[] args) {
        for (int i = 1; i <=9; i++) {
            if(i>5){
                for (int j=1;j<=i-4;j++){ System.out.print(" "); }
                for(int k=1;k<=19-2*i;k++){ System.out.print("*"); }
                System.out.println("");
            }else{
                for (int j=1;j<=6-i;j++){ System.out.print(" "); }
                for(int k=1;k<=2*i-1;k++){ System.out.print("*"); }
                System.out.println("");
            }        
        }
    }
}

下面来传统解法,从上到下依次打印等腰三角形,再打印倒三角形:

 

public class demo{
    public static void main(String[] args) {
    for(int i=1;i<=4;i++){
        for (int k=1;k<=4-i;k++){
            System.out.print(" ");
        }
        for (int j=1;j<=2*i-1;j++){
            System.out.print("*");
        }
        System.out.println("");
    }
        for (int i1 = 1; i1 <=3; i1++) {
            for (int k=1;k<=i1;k++){
                System.out.print(" ");
            }
            for (int j=1;j<=7-2*i1;j++){
                System.out.print("*");
            }
            System.out.println("");
        }
   }
}
可以看出微软自带的方法确实精简了不少代码,至于Java就定义两个方法再打印个菱形吧:
public class demo2 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            if (i > 5) {
                Space(i - 4);Star(19 - 2 * i);
            } else {
                Space(6 - i);Star(2 * i - 1);
            }
        }
    }
    public static void Space(int s) {
        for (int i = 0; i < s; i++) {
            System.out.print(" ");
        }
    }
    public static void Star(int s1) {
        for (int i = 0; i < s1; i++) {
            System.out.print("*");
        }
        System.out.println("");
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值