想输出等腰梯形,但是结果总是直角梯形,帮忙看下代码哪里有错,解惑~
来源: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回答
同学你好,这里可以在星号后面添加一个空格,如:
输出结果:
另外,代码的整体思路还可以优化,
输出空格:按照图形的规律,第一行输出4个空格,第二行输出3个空格,第三行输出2个空格,第四行输出1个空格。
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();} } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题