java中的打印模式像halfsphere

尝试在下面打印像半球这样的图案时,我已经添加了实际输出和预期输出以及我的代码,任何人都可以帮助如何做到这一点。提前致谢


我的代码


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

        }

    }



}

实际产量


 *  *  *    

 *  *       

 *          


 * 

 *  * 

 *  *  * 

预期输出


     *  *  *    

     *  *       

     *                 

     *  * 

     *  *  * 


牛魔王的故事
浏览 139回答 3
3回答

ABOUTYOU

这个答案需要您的确切代码,并通过一些更改到达您期望的输出。你很接近,你只需要在每一行上打印一个间隔,并从你的第二个外环上剪下一次迭代,for以避免打印*两次。for (int i=1;i <= 3; i++) {&nbsp; &nbsp; for (int k=3; k >= i; k--) {&nbsp; &nbsp; &nbsp; &nbsp; // print a new spacer at the start of each line&nbsp; &nbsp; &nbsp; &nbsp; if (k == 3) System.out.print("&nbsp; &nbsp;");&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(" " + "*" + " ");&nbsp; &nbsp; }&nbsp; &nbsp; for (int j=1; j <= i; j++) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.print("&nbsp; &nbsp;");&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();}// start at k=2 so as to NOT print a double single asterisk *for (int k=2; k <= 3; k++) {&nbsp; &nbsp; for (int l=0; l < k; l++) {&nbsp; &nbsp; &nbsp; &nbsp; // print a new spacer at the start of each line&nbsp; &nbsp; &nbsp; &nbsp; if (l == 0) System.out.print("&nbsp; &nbsp;");&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(" "+"*"+" ");&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();}&nbsp; &nbsp; *&nbsp; *&nbsp; *&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; *&nbsp; *&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; *&nbsp;&nbsp; &nbsp; *&nbsp; *&nbsp;&nbsp; &nbsp; *&nbsp; *&nbsp; *&nbsp;

子衿沉夜

首先,用其余的变量初始化 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{&nbsp;&nbsp;&nbsp; &nbsp; public static void main(String args[])&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; for (int i=1;i <= 3; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int k=3; k >= i; k--) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(" " + "*" + " ");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; System.out.println();&nbsp; &nbsp; &nbsp; &nbsp; for (int k=2; k <= 3; k++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int l=0; l < k; l++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(" "+"*"+" ");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}最终,这是一个通过修改数字或在编写代码之前解决纸笔问题来解决的问题。

回首忆惘然

快速而肮脏的解决方案&nbsp;public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; upperHalf(4);&nbsp; &nbsp; &nbsp; &nbsp; bottomHalf(4);&nbsp; &nbsp; }&nbsp; &nbsp; private static void upperHalf(int size) {&nbsp; &nbsp; &nbsp; &nbsp; for(int row = 0; row<size; row++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String rowContent = "";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int col=0; col<size-row; col++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rowContent+= " *";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!rowContent.equals(""))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(rowContent);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; private static void bottomHalf(int size) {&nbsp; &nbsp; &nbsp; &nbsp; for(int row=2; row<=size; row++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String rowContent = "";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int col=0; col<row;col++)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rowContent+= " *";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(rowContent);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java