簡體   English   中英

使用java中的for循環打印星號三角形

[英]Printing a triangle of asterisks using for loops in java

在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中實現它呢?

巨大的重要編輯:伙計們抱歉我搞砸了那里的示例輸出。 即我畫了星號三角形錯了。 我重復了星號圖。 但是我要關閉這個問題並重新發布,因為這個問題沒有得到太多活動。

我有一段時間沒用過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 
}

我個人更喜歡遞歸,但有很多不同的正確答案。 如果它不起作用,我會在這里

    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+= "*");
    }

您可以在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("");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM