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));

ロジックは非常に単純です。2 つのスペースと 3 つのアットマークを含む文字列があります。出力の最初の行は、2 つのスペースと 1 つのアットマークである必要があるため、これが文字列の最初の 3 文字になります。2 行目は 1 つのスペースと 2 つのアットマークである必要があります。これは、最初の行をスキップした後の文字列の 3 文字です。など: 文字列をスライドするだけで、そのたびに最初から 1 つスキップして次の 3 文字を取得します。

デモ

于 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

これを試して :

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 に答える
0

あなたの問題は、空白を出力していないことです。最初に各行をオフセットするために必要な空白の量を計算し、この空白を出力してから * を出力します

于 2012-07-18T13:11:17.287 に答える