如何根据传入的参数使方法执行某些操作?

时间:2012-10-18 03:49:30

标签: java

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


    }
}

我正在尝试制作看起来像这样的东西:

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

目前我正在将大约一半的正确图表左对齐。

我尝试合并printf,但我意识到它不起作用,因为level的值无法转移到printf方法。我还想知道是否有办法将最长的段(底部)设置为等于(2 *级) - 1星的长度并对其应用某种格式以获得答案?

2 个答案:

答案 0 :(得分: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个级别,则最后一行没有任何空格。 =&GT; N-1级将在第一行中具有N-1,在第二行中具有N-2,所以在第(N-1)行中为1。

  2. 星数:(第一级)给出你打印的行减1,因为,最初当一个=等级(一个等级= 0)时,它的第一行,下一个(等级一) = 1,因为一个减少了。 &安培;在每行中你必须打印,2 * X +1 *'s,

答案 1 :(得分: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();
   }
 }