java打印出菱形图案实例详解

网友投稿 271 2022-12-13


java打印出菱形图案实例详解

第一步:首先对图像进行解析

想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印。

第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环。并且由于“*”位置的关系,我们必须带入空格同时打印。所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环。

第二部:对数字进行分析

在分析之前,我们必须明白外层循环控制行数,内层循环控制列数,因此我们需要分析他的行和列。

示例代码如下:

class ForForTest {

public static void main(String[] args) {

/*

输出如下图形: 行数i: 空格数j: “*”数目z:

* 1 3 1

*** 2 2 3

***** 3 1 5

******* 4 0 7

***** 1 1 5 6

*** 2 2 3 5

* 3 3 1 4

*/

for (int i = 1;i <= 4;i++){

for (int j = 1;j <= 4 - i;j++) {

System.out.print(" ");

}

for (int z = 1;z <= i*2-1;z++){

System.out.print("*");

}

System.out.println();

}

for (int i = 1;i <= 3;i++){

for (int j = 1;j <= i;j++){

System.out.print(" ");

}

int y = 3;

for (int z = 5;z >= 2*i-1;z--){

System.out.print("*");

}

System.out.println();

}

}

}

实例补充:

import java.util.Scanner;

import java.util.regex.Matcher;

public class test01 {

private static int i;

private String ch;

public static void main(String[] args) {

    runTest();

    }

private void printBlank(int blank){//打空格

    for(int i=blank;i>=1;i--){

        System.out.print(" ");

    }

}

    private void printStar( int sum,String ch){ //打图形

        for(int i=sum;i>=1;i--){

            System.out.print(ch);

        }

    }

    private void printTab(){ //打回车

        System.out.println();

    }

    private void run(int level,String ch){//综合打

        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();

                }

            }

        }

        }

    public static void runTest() { //判断条件

        Scanner s = new Scanner(System.in);

        try{

            System.out.println("请输入要打印的层数,只能输入大于等于3的奇数 :" );

            int level = s.nextInt();

            String str = String.valueOf(level);

            if(str.matches("[1-9]\\d*")&&Integer.parseInt(str)%2!=0&&Integer.parseInt(str)!=1){

                System.out.println("请输入要打印的形状:" );

                String ch = s.next();

                try{

                    if(ch.matches("[^\u4e00-\u9fa5]+" )){

                        new test01().run(level, ch);

                    }else {

                        throw new Exception();}

                }catch (Exception e) {

                    System.out.println("输入有误!!!不能包含汉字字符,请重新输入");

                    System.out.println("***********************************");

                    runTest(); //递归

                }

            }else if(str.matches("[-9-0]+")){ //

                throw new Exception();

            }

        }catch (Exception e) {

            System.out.println(" 输入有误!!!只能输入大于等于3的奇数,请重新输入");

            System.out.println("***********************************");

            runTest(); //递归

        }

    }

    }

以上就是java打印出菱形图案实例详解的详细内容,更多关于java打印菱形图案的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot集群管理工具KafkaAdminClient使用方法解析
下一篇:Java正则表达式Pattern和Matcher原理详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~