为了账号安全,请及时绑定邮箱和手机立即绑定

java中的打印模式像halfsphere

java中的打印模式像halfsphere

牛魔王的故事 2021-09-12 16:07:56
尝试在下面打印像半球这样的图案时,我已经添加了实际输出和预期输出以及我的代码,任何人都可以帮助如何做到这一点。提前致谢我的代码public class PatternHalfSphere {    public static void main(String[] args) {        int i,j;        for(i = 1;i<=4;i++){            System.out.println();            for(int k=3;k>=i;k--){                System.out.print(" "+"*"+" ");            }            for(j=1;j<=i;j++){                System.out.print("   ");            }        }        for(int k=0;k<=3;k++) {            for(int l = 0; l<k;l++)             {                System.out.print(" "+"*"+" ");            }            System.out.println();        }    }}实际产量 *  *  *     *  *        *           *  *  *  *  *  * 预期输出     *  *  *         *  *            *                      *  *      *  *  * 
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

这个答案需要您的确切代码,并通过一些更改到达您期望的输出。你很接近,你只需要在每一行上打印一个间隔,并从你的第二个外环上剪下一次迭代,for以避免打印*两次。


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

    for (int k=3; k >= i; k--) {

        // print a new spacer at the start of each line

        if (k == 3) System.out.print("   ");

        System.out.print(" " + "*" + " ");

    }

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

        System.out.print("   ");

    }

    System.out.println();

}


// start at k=2 so as to NOT print a double single asterisk *

for (int k=2; k <= 3; k++) {

    for (int l=0; l < k; l++) {

        // print a new spacer at the start of each line

        if (l == 0) System.out.print("   ");

        System.out.print(" "+"*"+" ");

    }

    System.out.println();

}


    *  *  *    

    *  *       

    * 

    *  * 

    *  *  * 


查看完整回答
反对 回复 2021-09-12
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

首先,用其余的变量初始化 k。


int i, j, k;

然后你应该决定哪个 for 循环将负责打印的单个 '*' 并相应地调整另一个。例如,如果您提前终止第一个循环 1 步,它应该修复 2 个部分之间的间隙。


现在我保留第一个 for 循环的单个 '*' 并通过修改步骤在第二个循环中跳过它。


初始化 k=2 而不是 k=0。修复单个 * 重复以及它们之间的空间。

完全删除了使用 j 作为计数器的 for 循环,因为它会干扰输出中的间距,打印出不需要的 * 更远的地方。

最后System.out.println()在第二个 for 循环之前添加了一个,以便第二个 for 循环打印的 * 将从新行开始。


import java.util.*;

import java.lang.*;


class Rextester

{  

    public static void main(String args[])

    {

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

            System.out.println();

            for (int k=3; k >= i; k--) {

                System.out.print(" " + "*" + " ");

            }

        }

        System.out.println();

        for (int k=2; k <= 3; k++) {

            for (int l=0; l < k; l++) {

                System.out.print(" "+"*"+" ");

            }

            System.out.println();

        }

    }

}

最终,这是一个通过修改数字或在编写代码之前解决纸笔问题来解决的问题。


查看完整回答
反对 回复 2021-09-12
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

快速而肮脏的解决方案


 public static void main(String[] args) {

        upperHalf(4);

        bottomHalf(4);

    }


    private static void upperHalf(int size) {

        for(int row = 0; row<size; row++){

            String rowContent = "";

            for(int col=0; col<size-row; col++){

                rowContent+= " *";

            }

            if(!rowContent.equals(""))

                System.out.println(rowContent);

        }

    }


    private static void bottomHalf(int size) {

        for(int row=2; row<=size; row++) {

            String rowContent = "";

            for(int col=0; col<row;col++) 

            {

                rowContent+= " *";

            }

            System.out.println(rowContent);

        }

    }


查看完整回答
反对 回复 2021-09-12
  • 3 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信