在java中使用for循环打印星号

时间:2015-10-21 01:29:40

标签: java python for-loop

在python中,打印

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

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

我们会编写以下代码:

for e in range (11,0,-1):
    print((11-e) * ' ' + e * '*')

print ('')
for g in range (11,0,-1):
    print(g * ' ' + (11-g) * '*')

我的问题是,这可以用Java完成吗? Java不允许你乘以字符串(int)次数,例如4 * " ",那么我们如何在java中实现它?

7 个答案:

答案 0 :(得分:1)

这不简洁:

    // top half..
    for (int i=11;i>0;i--){
        for (int a=0;a<11-i;a++){
            System.out.print(' ');
        }
        for (int b=0;b<i;b++){
            System.out.print('*');
        }
        System.out.println();
    }

答案 1 :(得分:1)

public class Loops {

  public static void main(String[] args) {
      //print first half
      for(int i = 0; i < 6; i++) {
          printChar(' ', i);
          printChar('*', 6-i);
          System.out.println();
      }        

      //print second half
      for(int i = 0; i <= 6; i++) {
         printChar(' ', 6-i);
         printChar('*', i);
         System.out.println();
      }
      System.out.println();
    }

    //helper function to print a char n specific times
    private static void printChar(char ch, int n) {
        for(int i = 0; i < n; i++) {
            System.out.print(ch);
        }
    }

}

答案 2 :(得分:0)

要在Java中多次运行字符串,可以使用for循环。

for(int i = 0; i < yournum; i++){
    System.out.print(" ");
}

yournum是您想要的空格数

答案 3 :(得分:0)

这是一个Core Java解决方案,它可以使用单个for循环生成整个输出:

String before = "", after = "";

for (int i=0; i < 6; ++i) {
    String starRepeat = String.format("%0" + (6-i) + "d", 0).replace("0", "*");
    String spaceRepeat = (i>0) ? String.format("%0" + i + "d", 0).replace("0", " ") : "";
    String line = spaceRepeat + starRepeat;

    if (i == 0) {
        before = line;
        after = line;
    }
    else {
        before = before + "\n" + line;
        after = line + "\n" + after;
    }
}

System.out.println(before + "\n\n" + after);

<强>输出:

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

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

答案 4 :(得分:0)

    IntStream.range(0, 6).forEach(i -> {
        IntStream.range(0, i)
                .forEach(t -> System.out.print(" "));
        IntStream.range(0, 6 - i)
                .forEach(t -> System.out.print("*"));
        System.out.println();
    });

Java8中,您可以使用Stream执行相同操作。使用IntStreamrangeprintln

答案 5 :(得分:0)

如果您愿意使用:Commons Lang StringUtils ...... 使用Commons Lang StringUtils.repeat()可以帮助你重复一个字符串...... 举个例子:

StringUtils.repeat("*", 3) //produces ***

答案 6 :(得分:-2)

您可以在字符串上添加要打印的消息,然后按System.out.println(message);打印字符串值