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
*
***
*****
*******
*********