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

Java 中的金字塔模式,后跟星形后跟下划线

Java 中的金字塔模式,后跟星形后跟下划线

海绵宝宝撒 2022-09-07 17:25:41
我想打印以下图案:**_**_*_**_*_*_**_*_*_*_*但这里的问题是我无法消除最后一个符号,这是我得到的输出:_**_*_*_*_*_*_*_*_*_*_*_*_*_*_int row =5;String star="*";String undrscr="_";String s;for(int i=1;i<=row;i++){//System.out.print(undrscr);    for(int j=1;j<=i;j++)    {                   if(i==1)        {        System.out.print(star);        }        if(i>1)        {            System.out.print(star+""+undrscr);        if(j==i)        {            System.out.print("");        }        }    }    System.out.println();}
查看完整描述

4 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

将你的内在 for 循环更改为:


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

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

        if (i == 1) {

            System.out.print(star);

        }

        if (i > 1) {

            System.out.print(star);

            if (i - 1 >= j) {              // <-- change made in this if-block only

                System.out.print(undrscr);

            }

            if (j == i) {

                System.out.print("");

            }

        }

    }

    System.out.println();

}

在打印下划线之前,请检查是否因为根据您的要求下划线数始终比星数少1。i - 1 >= j


查看完整回答
反对 回复 2022-09-07
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

试试这个..


    int row = 5;

    String star = "*";

    String undrscr = "_";

    String s;

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

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


            System.out.print(star);

            if (i != j)

                System.out.print(undrscr);

        }


        System.out.println();

    }


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

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

试试这个:


//i was the rowNum and the number of stars of that row

for (int rowNum = 0; rowNum<=rows; rowNum++) {

    int numStars = 0;

        while (numStars<rowNum) {

            System.out.print(star+undrscr);

            numStars++;

        }

        System.out.println(star);

    }

输出:


*

*_*

*_*_*

*_*_*_*

*_*_*_*_*

*_*_*_*_*_*

编辑:最好使用这种方法,你会得到5行而不是6行。


for (int rowNum = 1; rowNum<=rows; rowNum++) {

    int numStars = 1;

    while (numStars<rowNum) {

        System.out.print(star+undrscr);

        numStars++;

    }

    System.out.println(star);

}


查看完整回答
反对 回复 2022-09-07
?
慕村9548890

TA贡献1884条经验 获得超4个赞

在此,星星的行数呈递增顺序(即第一行有 1 颗星,第二行为 2 颗星,依此类推)。


逐步描述性逻辑,以打印带有下划线图案的直角三角形星形。


1)输入用户要打印的行数。我们传递 5 行。


2)要循环访问行,请使用循环结构 for(i=0; i=5<; i++) 运行一个从 0 到 5 的外部循环。


3)要循环访问列,请使用循环结构 for(j=0; j=0;< j=i; j++) 运行一个从 0 到 i 的内部循环。内部循环内部打印星形。


4)在列循环中,我们检查i == j是否然后只打印星形,否则打印星形和下划线。


5)打印一行的所有列后,移动到下一行,即打印新行。


 int i, j;

      for(i=0; i<5; i++)

      {

          for(j=0; j<=i; j++)

          {

             if(i==j)

             {

                 System.out.print("*");

             }

             else

             {

              System.out.print("*");

              System.out.print("_");

             }

          }

          System.out.println();

      }


查看完整回答
反对 回复 2022-09-07
  • 4 回答
  • 0 关注
  • 85 浏览

添加回答

举报

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