java打印出菱形图案实例详解
第一步:首先对图像进行解析
想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印。
第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环。并且由于“*”位置的关系,我们必须带入空格同时打印。所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环。
第二部:对数字进行分析
在分析之前,我们必须明白外层循环控制行数,内层循环控制列数,因此我们需要分析他的行和列。
示例代码如下:
classForForTest{
publicstaticvoidmain(String[]args){
/*
输出如下图形:行数i:空格数j:“*”数目z:
*131
***223
*****315
*******407
*****1156
***2235
*3314
*/
for(inti=1;i<=4;i++){
for(intj=1;j<=4-i;j++){
System.out.print("");
}
for(intz=1;z<=i*2-1;z++){
System.out.print("*");
}
System.out.println();
}
for(inti=1;i<=3;i++){
for(intj=1;j<=i;j++){
System.out.print("");
}
inty=3;
for(intz=5;z>=2*i-1;z--){
System.out.print("*");
}
System.out.println();
}
}
}
实例补充:
importjava.util.Scanner;
importjava.util.regex.Matcher;
publicclasstest01{
privatestaticinti;
privateStringch;
publicstaticvoidmain(String[]args){
runTest();
}
privatevoidprintBlank(intblank){//打空格
for(inti=blank;i>=1;i--){
System.out.print("");
}
}
privatevoidprintStar(intsum,Stringch){//打图形
for(inti=sum;i>=1;i--){
System.out.print(ch);
}
}
privatevoidprintTab(){//打回车
System.out.println();
}
privatevoidrun(intlevel,Stringch){//综合打
if(ch.length()==1){
for(i=1;i<=(level+1)/2;i++){
if(i==1){
printBlank((level+1)/2-i);
printStar(1,ch);
printTab();
}else{
printBlank((level+1)/2-i);
printStar(1,ch);
printBlank(((level+1)/2+i-1)-((level+1)/2-i)-2);//总元素为层数+i-1,再减去打印的空格和*号数量.
printStar(1,ch);
printTab();
}
}for(i=(level+1)/2-1;i>=1;i--){
if(i==1){
printBlank((level+1)/2-i);
printStar(1,ch);
printTab();
}else{
printBlank((level+1)/2-i);
printStar(1,ch);
printBlank((level+1)/2+i-1-((level+1)/2-i)-2);
printStar(1,ch);
printTab();
}
}
}else{
for(i=1;i<=(level+1)/2;i++){
if(i==1){
printBlank((level+1)/2-i+ch.length()/2);
printStar(1,ch);
printTab();
}else{
printBlank((level+1)/2-i);
printStar(1,ch);
printBlank(((level+1)/2+i-1)-((level+1)/2-i)-2);//总元素为层数+i-1,再减去打印的空格和*号数量.
printStar(1,ch);
printTab();
}
}for(i=(level+1)/2-1;i>=1;i--){
if(i==1){
printBlank((level+1)/2-i+ch.length()/2);
printStar(1,ch);
printTab();
}else{
printBlank((level+1)/2-i);
printStar(1,ch);
printBlank((level+1)/2+i-1-((level+1)/2-i)-2);
printStar(1,ch);
printTab();
}
}
}
}
publicstaticvoidrunTest(){//判断条件
Scanners=newScanner(System.in);
try{
System.out.println("请输入要打印的层数,只能输入大于等于3的奇数:");
intlevel=s.nextInt();
Stringstr=String.valueOf(level);
if(str.matches("[1-9]\\d*")&&Integer.parseInt(str)%2!=0&&Integer.parseInt(str)!=1){
System.out.println("请输入要打印的形状:");
Stringch=s.next();
try{
if(ch.matches("[^\u4e00-\u9fa5]+")){
newtest01().run(level,ch);
}else{
thrownewException();}
}catch(Exceptione){
System.out.println("输入有误!!!不能包含汉字字符,请重新输入");
System.out.println("***********************************");
runTest();//递归
}
}elseif(str.matches("[-9-0]+")){//
thrownewException();
}
}catch(Exceptione){
System.out.println("输入有误!!!只能输入大于等于3的奇数,请重新输入");
System.out.println("***********************************");
runTest();//递归
}
}
}
以上就是java打印出菱形图案实例详解的详细内容,更多关于java打印菱形图案的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。