在java

时间:2015-10-20 22:11:03

标签: 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中实现它?

巨大的重要编辑:伙计们抱歉我搞砸了那里的示例输出。即我画了星号三角形错了。我重复了星号图。但是我要关闭这个问题并重新发布,因为这个问题并没有太多活动。

3 个答案:

答案 0 :(得分:2)

我暂时没有使用过Java,所以如果这段代码生锈,我很抱歉

但是你不能做类似的事情:

public int printAsterisks(int numOfAsterisks){
  if(numOfAsteriks == 0)
    return 0;
  for(int i = numOfAsteriks;i > 0 ; i--){
    System.out.print("*");

  }
  System.out.println("")//Without this all asteriks would be printed on one line

  return printAsteriks(--numOfAsterisks); //Recursively finish printing the asteriks 
}

我个人更喜欢递归,但有很多不同的正确答案。如果它不起作用,我会在这里第一个领带

答案 1 :(得分:1)

    String str = "******";

    for (int i = 5; i >= 0; i--) {
        System.out.println(str=str.substring(0, i));
    }
    for (int i = 0; i <= 5; i++) {

        System.out.println(str+= "*");
    }

答案 2 :(得分:0)

你可以在python中用一个循环来编写它,因为该模式的公式是y = abs(x - 5),其中y是星号,x是循环中的迭代次数(从零开始)。所以继续Java:

class Demo {
    public static void main(String[] args) {
        for(int i=0; i<13; i++) {
            int repeats = Math.abs(i - 5); // formula: y = abs(x - 5)
            while (repeats-- > 0)
                System.out.print("*");
            System.out.println("");
        }
    }
}