Java练习-打印各类图形

大家好呀!是我是我是我你们的朋友一点都不秃的丝瓜藤~

废话不多说,上代码哈哈哈!这次是关于各种图形的打印,咱就是说啊~Java世界里奇奇怪怪的形状真可爱~

今天的图形打印有:

1.线段打印

 2.打印正方形

①简单正方形

②空心正方形

3.打印三角形

①左直角三角形

②右直角三角形

③倒立直角三角形

④空心直角三角形

4.打印金字塔

①正金字塔

②倒立金字塔

5.打印菱形

6.打印K形

7.打印箭形

8.打印斜线

①正斜线

②反斜线

9.打印X图形


1.线段打印

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案。

输入描述:多组输入,一个整数(1~100),表示线段长度,即“*”的数量。

输出描述:针对每行输入,输出占一行,用“*”组成的对应长度的线段。

代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int i = sc.nextInt();
                for(int n=0;n<i;n++){
                    System.out.print("*");
                }
                System.out.println();
            }sc.close();
        }
    }

 2.打印正方形

①简单正方形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正方形图案。

输入描述:多组输入,一个整数(1~20),表示正方形的长度,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的对应边长的正方形,每个“*”后面有一个空格。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int i = sc.nextInt();
                for(int n=0;n<i;n++){
                   for(int m=0;m<i;m++){
                       System.out.print("* ");
                   }
                    System.out.println();
                }
            }sc.close();
        }
    }

②空心正方形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。

输入描述:多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //空心正方形n
                for (int i=0;i<n;i++) {
                    for (int j=0;j<n;j++) {
                        if ( i == 0 ) {
                            System.out.print("* ");
                        }
                        else if (i == n-1) {
                            System.out.print("* ");
                        }
                        else if (j == 0 || j ==n-1) {
                            System.out.print("* ");
                        }
                        else {
                            System.out.print("  ");
                        }
                    }
                    System.out.println();
                }
            }sc.close();
        }
    }

3.打印三角形

①左直角三角形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的直角三角形图案。

输入描述:多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

 代码分享:


public class Main {
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //打印直角三角形
                if(n>=2&&n<=20){
                    for(int i=1;i<=n;i++){
                        for(int k=1;k<=i;k++){
                            System.out.print("* ");
                        }
                        System.out.println();
                    }
                }

            }sc.close();
        }
    }

②右直角三角形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。

输入描述:多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //打印直角三角形
                if(n>=2&&n<=20){
                    for(int i=1;i<=n;i++){
                        for(int k=n;k>i;k--){
                            System.out.print("  ");
                        }
                        for (int j =1; j <=i; j++) {
                            System.out.print("* ");
                        }
                        System.out.println();
                    }
                }

            }sc.close();
        }
    }

③倒立直角三角形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。

输入描述:多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。

代码分享:

public class Main {
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //打印倒立直角三角形
                if(n>=2&&n<=20){
                    for(int i=1;i<=n;i++){
                        for(int k=n;k>=i;k--){
                            System.out.print("* ");
                        }
                        System.out.println();
                    }
                }

            }sc.close();
        }
    }

④空心直角三角形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”三角形图案。

输入描述:多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的“空心”三角形,每个“*”后面有一个空格。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //打印空心直角三角形
                if(n>=3&&n<=20){
                    for(int i=1;i<=n;i++){
                        for(int k=1;k<=i;k++){
                           if(i==1||i==n){
                               System.out.print("* ");
                           }else if(k==1||k==i){
                               System.out.print("* ");
                           }else{
                               System.out.print("  ");
                           }
                        }
                        System.out.println();
                    }
                }

            }sc.close();
        }
    }

4.打印金字塔

①正金字塔

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的金字塔图案。

输入描述:多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();   //打印正金字塔
                if(n>=2&&n<=20){
                    for(int i=1;i<=n;i++){
                        for(int k=n;k>i;k--){
                            System.out.print(" ");
                        }
                        for (int j =1; j <=i; j++) {
                            System.out.print("* ");
                        }
                        System.out.println();
                    }
                }
            }sc.close();
        }
    }

②倒立金字塔

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。

输入描述:多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。

输出描述:针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

 代码分享:

public class Main {
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int n= sc.nextInt();
                if(n>=2&&n<=20){
                    for(int i=n;i>0;i--){
                        for(int k=n;k>i;k--){
                            System.out.print(" ");
                        }
                        for (int j =i; j > 0; j--) {
                            System.out.print("* ");
                        }
                        System.out.println();
                    }
                }
            }sc.close();
        }
    }

5.打印菱形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。

输入描述:多组输入,一个整数(2~20)。

输出描述:针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。

 代码分享:

public class Main{
    public static void main(String[] args) {
        java.util.Scanner sc = new java.util.Scanner(System.in);
        while(sc.hasNext()){
            int m= sc.nextInt();   //打印菱形
            int n=m+1;
            if(m>=2&&m<=20){
                for(int i=1;i<=n;i++){
                    for(int k=n;k>i;k--){
                        System.out.print(" ");
                    }
                    for (int j =1; j <=i; j++) {
                        System.out.print("* ");
                    }
                    System.out.println();
                }
                for(int i=n-1;i>0;i--){
                    for(int k=n;k>i;k--){
                        System.out.print(" ");
                    }
                    for (int j =i; j > 0; j--) {
                        System.out.print("* ");
                    }
                    System.out.println();
                }
            }
        }sc.close();
    }
}

6.打印K形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。

输入描述:多组输入,一个整数(2~20)。

输出描述:针对每行输入,输出用“*”组成的K形,每个“*”后面有一个空格。

 代码分享:


import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int m = sc.nextInt();
            int n=m+1;
            if (n >= 3 && n <= 20) {
                for(int i=1;i<=m;i++){
                    for(int k=n;k>=i;k--){
                        System.out.print("* ");
                    }
                    System.out.println();
                }
                for(int i=1;i<=n;i++){
                    for(int k=1;k<=i;k++){
                        System.out.print("* ");
                    }
                    System.out.println();
                }

            }

        }
    }
}


7.打印箭形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。

输入描述:本题多组输入,每行一个整数(2~20)。

输出描述:针对每行输入,输出用“*”组成的箭形。

 代码分享:


import java.util.*;
public class Main {
            public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                while (scanner.hasNext()){
                    int m=scanner.nextInt();
                    int n=m+1;
                    if(m>=2&&m<=20){
                        for(int i=1;i<=n;i++){
                            for(int k=n;k>i;k--){
                                System.out.print("  ");
                            }
                            for (int j =1; j <=i; j++) {
                                System.out.print("*");
                            }
                            System.out.println();
                        }
                        for(int i=m;i>0;i--){
                            for(int k=n;k>i;k--){
                                System.out.print("  ");
                            }
                            for (int j =i; j > 0; j--) {
                                System.out.print("*");
                            }
                            System.out.println();
                        }

                    }
                }
    }
}

8.打印斜线

①正斜线

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。

输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的正斜线。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int i = sc.nextInt();
                for(int n=i;n>0;n--){
                    for(int m=1;m<=i;m++){
                        if(m==n){
                            System.out.print("*");
                        }else{
                            System.out.print(" ");
                        }

                    }
                    System.out.println();
                }
            }sc.close();
        }
    }

②反斜线

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。

输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。

输出描述:针对每行输入,输出用“*”组成的反斜线。

 代码分享:

public class Main{
        public static void main(String[] args) {
            java.util.Scanner sc = new java.util.Scanner(System.in);
            while(sc.hasNext()){
                int i = sc.nextInt();
                for(int n=1;n<=i;n++){
                    for(int m=1;m<=i;m++){
                        if(m==n){
                            System.out.print("*");
                        }else{
                            System.out.print(" ");
                        }

                    }
                    System.out.println();
                }
            }sc.close();
        }
    }

9.打印X图形

题目描述:KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:针对每行输入,输出用“*”组成的X形图案。

 代码分享:

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        //用户输入数字以创建同样大小的二维数组
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {//使循环输入
            int x = sc.nextInt();
            if(x>=2&&x<=20){
            char[][] arr = new char[x][x];
            //设置数组全为空格
            for (int i = 0; i < x; i++) {
                for (int j = 0; j < x; j++) {
                    arr[i][j] = ' ';
                }
            }

            //利用下标设置*
            for (int i = 0; i < x; i++) {
                int left = 0;
                int right = x - 1;
                for (; left < x && right >= 0; left++, right--) {
                    arr[i][i] = '*';
                    arr[left][right] = '*';
                }
            }

            //打印数组
            for (int i = 0; i < x; i++) {
                for (int j = 0; j < x; j++) {
                    System.out.printf("%c", arr[i][j]);
                }
                System.out.println();
            }
        }
        }
    }
}

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值