想输出等腰梯形,但是结果总是直角梯形,帮忙看下代码哪里有错,解惑~

来源:5-3 编程练习

何小色

2019-11-28 15:55:56

public class StarDemo {

    public static void main(String[] args) {

// 输出星号组成的梯形

int num=1;

int kongge=5;

int konggeyou=5;

int sum=1;

for(int hang=1;hang<=5;hang++)

{

    kongge=5;

    kongge-=hang;

    for(;kongge>=1;kongge--)

    {

        System.out.print("  ");

    }

    num=1;

    sum=sum+2;

    for(;num<=sum;num++)

    {

        System.out.print("*");

    }

    konggeyou=5;

    konggeyou-=hang;

    for(;konggeyou>=1;konggeyou--)

    {

        System.out.print("  ");

    }

   

   System.out.println();

   

}

}

}

写回答

1回答

好帮手慕酷酷

2019-11-28

同学你好,这里可以在星号后面添加一个空格,如:

http://img.mukewang.com/climg/5ddf992d097fd6c105470216.jpg

输出结果:

http://img.mukewang.com/climg/5ddf995a0948f83202710182.jpg

另外,代码的整体思路还可以优化,

输出空格:按照图形的规律,第一行输出4个空格,第二行输出3个空格,第三行输出2个空格,第四行输出1个空格。

http://img.mukewang.com/climg/5ddf998f0945146603270229.jpg

i表示行数,每行的空格数就等于5-i。所以,每行需要输出5-i个空格,这里j就需要小于等于5-i。

输出星号:我们通过行数可以找到规律,

i=1,第一行星号是3个

i=2,第二行星号是5个

i=3,第三行星号是7个,以此类推,我们可以发现星号与行数的关系为2*i+1,所以k为星号,循环条件为k<=2*i+1。

例如代码如下:

public class StarDemo {
    public static void main(String[] args) {
        // 输出星号组成的梯形
        for(int i=1;i<=5;i++){
            for(int j=1;j<=5-i;j++){
                System.out.print(" ");
            }
             for(int k=1;k<=2*i+1;k++){
                 System.out.print("*");
             }
            System.out.println();}
   }
}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

1

0 学习 · 11489 问题

查看课程