1

我想试试直角三角形星号。但我只得到了这个 输出:(我不能在这里放星号)

@ 
@@
@@@

我想要的是这个:

  @
 @@
@@@

这是我编写的代码:

 public class triangles {
public static void main( String[] args ) {

    for( int i = 1; i <= 10; i++ ){
        for( int j = 0; j < i; j++ ){
            System.out.print("*");

        }
        System.out.println();
    }

}
  }

非常感谢您分享任何想法。我是一个java新手。谢谢。

4

5 回答 5

8

您的代码从不打印任何空格,这应该是个问题。

您可以使用这种简单的方法:

for (int i = 0; i < 3; i++) System.out.println("  @@@".substring(i, i+3));

逻辑很简单:你的字符串有两个空格和三个 at 符号。输出的第一行需要是两个空格和一个 at 符号,所以这是字符串的前三个字符。第二行应该是一个空格和两个 at 符号——这是跳过第一行后字符串的三个字符;依此类推:您只需在字符串中滑动,每次从头开始再跳过一个并获取接下来的三个字符。

演示

于 2012-07-18T13:12:09.223 回答
4
for(int i = 0; i < 9; i++) {
    for(int j = 9; j > 0; j--)
        System.out.print(i < j ? " " : "*");

    System.out.println();
}
于 2012-07-18T13:16:25.900 回答
0

您的问题是您没有输出任何空白。先计算每行需要多少空格,输出这个空格,然后输出你的*

于 2012-07-18T13:11:17.287 回答
0

尝试以下操作:

import java.io.*;
public class Star2 {

    public static void main(String[] args)throws IOException {

        InputStreamReader read = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(read);
        int i,j,n=0,k;
        System.out.print("How many stars you want to print in first row ? ");
        n=Integer.parseInt(in.readLine());
        for (i = 0; i<n; i=i+2)
        {
            for (j=i; j<n;j++)
            System.out.print ("*");
            System.out.println();
        }
    }

}
于 2014-06-25T11:14:47.937 回答
0

试试这个 :

public class PrintPyramidStar {  

   public static void main(String args[]) {  

    int c = 1;  
    for (int i = 1; i <= 5; i++) {  
        for (int j = i; j < 5; j++) {  
            System.out.print(" ");
        }  
        for (int k = 1; k <= c; k++) {  
            if (k % 2 == 0)  
                System.out.print(" ");  
            else  
                System.out.print("*");  
        }  
        System.out.println();  
        c += 2;  
    }  
  }  
}  
于 2014-06-25T11:24:32.053 回答