0
public void printStars(int level) {

    for (int one = level; one >= 1; one--) {

        for (int two = one; two <= level; two++) {


            System.out.print("*");

        }
        System.out.println();


    }
}

私はこのようなものを作ろうとしています:

    *
   ***
  *****
 *******
*********

現在、正しい図の約半分がすべて左揃えになっています。

levelprintfを組み込んでみましたが、の値をprintfメソッドに転送できないため、機能しないことに気付きました。また、最長のセグメント(下部)を(2 *レベル)-1つ星の長さに設定し、それに何らかのフォーマットを適用して答えを得る方法があるかどうか疑問に思いました。

4

2 に答える 2

3

前方に適切な数のスペースを印刷する

public void printStars(int level) {

    for (int one = level; one >= 1; one--) {
        for(int k=1, k<one;k++){  // print appropriate number of spaces before
            System.out.print(" "); 
        }    
        for (int two = 1; two <=2*(level-one)+1; two++) {
            System.out.print("*");
        }
        System.out.println();
    }
}

説明:

  1. 合計でNレベルがあり、最後の行にスペースがない場合。=> N-1レベルには、1行目にN-1、2行目にN-2というように、(N-1)行目に1のスペースがあります。

  2. 星の数:(レベル1)は、印刷している行から1を引いたものになります。これは、最初に1 =レベル(1レベル= 0)の場合、最初の行、次の(レベル1)= 1であるため、減少しました。&各行に印刷する必要があります、2 * X +1 *、

于 2012-10-18T03:56:07.930 に答える
2

以下をお試しください:

public static void printStars(int level) {
    for (int one = 0; one < level; one++) {
      for(int space = 1; space < (level-one); space++){ //<- print leading space
       System.out.print(" ");
      }

      //<- print stars in odd numbers e.g. 1,3,5,7
      for (int two = 0; two < 2*one+1; two++) { 
       System.out.print("*");
      }
      System.out.println();
   }
 }
于 2012-10-18T03:56:53.757 に答える