Java练手:利用循环绘制等腰三角形

package argsAndFlow;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IsoscelesTri {
/*
*autor @乔一桥
*目标:输出一个由“*”组成的等腰三角形
*全局变量:intTriLine
*局部变量:intLine、intRows,intCount、intBegin,intEnd
*常量:REGEX
*方法:1、输入方法 String input()
      2、绘图方法 void triDraw(int intTriLine)
      3、正则式判断 booblean judge(String a)
 */
    private static int intTriLine;
    private static String REGEX="\\d";

    //输入方法,用户输入生成的等腰三角形的行数
    public String input()
    {
        Scanner scanner=new Scanner(System.in);
        String intGetInput=scanner.nextLine();
        return intGetInput;
    }

    //绘制三角形
    public void triDraw(int intTriLine)
    {
        String strTransit=this.input();
        if(this.Judge(strTransit)){
            intTriLine=Integer.parseInt(strTransit);

            int intCount=intTriLine*2-1;

                if(intTriLine!=0){
                    for(int intLine=1;intLine<=intTriLine;intLine++)
                    {
                        //Java中"/"是向下取整的,所以+1,可以使用math.round()方法代替
                        int intBegin=(intCount+1)/2-intLine+1;
                        int intEnd=(intCount+1)/2+intLine-1;

                        for(int intRows=1;intRows<=intCount;intRows++)
                        {
                                if(intRows>=intBegin && intRows<=intEnd)
                                {System.out.print("*");}
                                else{System.out.print(" ");}
                        }
                        System.out.println();
                    }
                }else{System.out.print("系统不能绘制0行三角,请重新输入:");this.triDraw(intTriLine);}
        }else{System.out.print("输入无效,请重新输入:");this.triDraw(intTriLine);}
    }
    //判断输入的是否为数字
    public boolean Judge(String a)
    {
        Pattern p=Pattern.compile(REGEX);
        Matcher m=p.matcher(a);
        return m.matches();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IsoscelesTri tri=new IsoscelesTri();
        System.out.print("请输入绘制的行数:");
        tri.triDraw(intTriLine);
    }

}

输出结果

请输入绘制的行数:a
输入无效,请重新输入:0
系统不能绘制0行三角,请重新输入:5
    *    
   ***   
  *****  
 ******* 
*********
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值