我试图用星号(*)输出Pascal的三角形。这是我的代码:
public static void main(String [] arg)
{
int n=3;
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
System.out.print(" ");
}
boolean b=true;
for(int k=0;k<i*2+1;k++)
{
if(b)
{
System.out.print("*");
b=false;
}
else
{
System.out.print(" ");
b=true;
}
}
}
System.out.println(" ");
}
}
我已经多次重新检查,但没有发现任何错误。 另请告诉我if-block是否正确实现。 以下代码未提供如下所需的输出:
*
* *
* * *
答案 0 :(得分:0)
使内循环反转
for(int j=n-i;j>0;j--)
{
System.out.print(" ");
}
这应该从3开始然后2然后1星
打印答案 1 :(得分:0)
您的System.out.println()
声明超出了for循环而非内部。
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
boolean b = true;
for (int k = 0; k < i * 2 + 1; k++) {
if (b) {
System.out.print("*");
b = false;
} else {
System.out.print(" ");
b = true;
}
}
}
System.out.println(" "); // called only once
// output is
// * * * * * *
只需将其移动到近大括号中,您的程序就可以正常工作。
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
boolean b = true;
for (int k = 0; k < i * 2 + 1; k++) {
if (b) {
System.out.print("*");
b = false;
} else {
System.out.print(" ");
b = true;
}
}
System.out.println(" "); // called once for each iteration
}
// output is
// *
// * *
// * * *