韩顺平Java基础作业——空心金字塔和空心菱形打印:

韩顺平Java基础作业——金字塔和菱形打印:

由简单的直角三角形、实心金字塔再到空心金子塔。包含了while语句实现的代码(小白,自己敲的)
最后拓展到空心菱形


直角三角形

while语句我加了Scanner使参数灵活,for循环的可自行改善:
直接上代码

import java.util.Scanner;
//直角三角形
/*
 *
 **
 ***
 ****
* */
public class Stars {
    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int totalLevel = sc.nextInt();
//        int i = 0;
//        while (i<totalLevel){
//            int j = 0;
//            while(j<=i){
//                System.out.print("*");
//                j++;
//            }
//            System.out.println();
//            i++;

        for (int i =  1; i <= 5; i++){
            for (int j = 1; j <= i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

实心金字塔

import java.util.Scanner;
//实心金字塔
/*
     *
    ***
   *****
  *******
 *********
 */
public class Stars02 {
    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        System.out.println("请输入你的层数:");
//        int totalLevel = sc.nextInt();
//        int i = 0;//定义变量i作为金字塔层数
//        while (i<totalLevel){
//            int j = totalLevel;//定义变量j=层数,作为当前层要加的空格数量
//            while(j>i){
//                j--;
//                //最后一个空格要开始遍历*号
//                if (j==i){
//                    int k = 0;
//                    //星号个数为等差数列,2n-1
//                    while(k<(2*(i+1)-1)){
//                        System.out.print("*");
//                        k++;
//                    }
//                }else{
//                    System.out.print(" ");
//                }
//            }
//            System.out.println();
//            i++;
//        }

        for (int i =  1; i <= 5; i++){
            //在输出*之前, 还有输出 对应空格 = 总层数-当前层
            for (int k = 1;k <= 5-i; k++){
                System.out.print(" ");
            }
            //控制打印每层的*个数
            for (int j = 1; j <= 2*i-1;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

空心金字塔

import java.util.Scanner;
// 空心金字塔
/*
    *
   * *
  *   *
 *******
 */
public class Stars03 {
    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        System.out.println("请输入你的层数:");
//        int totalLevel = sc.nextInt();
//        int i = 0;//定义变量i作为金字塔层数
//        while (i<totalLevel){
//            int j = totalLevel;//定义变量j=层数,作为当前层要加的空格数量
//            while(j>i){
//                j--;
//                //最后一个空格要开始遍历*号
//                if (j==i){
//                    int k = 0;
//                    //星号个数为等差数列,2n-1
//                    int count = 2*(i+1)-1;
//                    while(k<count){
//                        if (i == totalLevel-1){
//                            System.out.print("*");
//                        }else if (k == 0 || k == count-1){
//                            System.out.print("*");
//                        }else{
//                            System.out.print(" ");
//                        }
//                        k++;
//                    }
//                }else{
//                    System.out.print(" ");
//                }
//            }
//            System.out.println();
//            i++;
//        }
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入总层数:");
        int totalLevel = sc.nextInt();

        for (int i =  1; i <= totalLevel; i++){
            //在输出*之前, 还有输出 对应空格 = 总层数-当前层
            for (int k = 1;k <= totalLevel-i; k++){
                System.out.print(" ");
            }
            //控制打印每层的*个数
            for (int j = 1; j <= 2*i-1;j++){
                if (j == 1 || j == 2 * i - 1 || i == totalLevel){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }

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

空心菱形

空心菱形的输入只能奇数层,因为我觉得输入偶数层,便成了六边形了。
优化的话,简单点可以加一个if判断层数为奇数还是偶数,再进行打印。这步就交给你们了。哈哈哈哈

import java.util.Scanner;

//打印空心菱形
public class Rhombus {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入总层数:");
        int totalLevel = sc.nextInt();

        for (int i =  1; i <= totalLevel; i++) {
            //先打印菱形上半部
            if (i <= totalLevel / 2 + 1){
                //在输出*之前, 还有输出 对应空格 = 总层数-当前层
                for (int k = 1; k <= (totalLevel / 2 + 1) - i; k++) {
                    System.out.print(" ");
                }
                //控制打印每层的*个数
                for (int j = 1; j <= 2*i-1;j++){
                    if (j == 1 || j == 2 * i - 1 || i == totalLevel){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
            }else {//打印菱形下半部
                for (int k = 1; k <= i - (totalLevel / 2 + 1); k++) {
                    System.out.print(" ");
                }
                //控制打印每层的*个数
                //剩余totalLevel - i + 1层,当前层打印2*(totalLevel - i + 1) - 1个*
                //totalLevel - i + 1相当于2n-1中的n
                for (int j = 1; j <= 2*(totalLevel - i + 1) - 1;j++){
                    if (j == 1 || j == 2*(totalLevel - i + 1) - 1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
            }
            System.out.println();
        }
    }
}

第一次发csdn,大家一起加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值