簡體   English   中英

如何在Java中使用循環制作模式

[英]how to make a pattern with loops in java

public class NestedLoopPattern {
    public static void main(String[] args) {
        final int HASHTAG_AMMOUNT = 6;

        for (int i=0; i < HASHTAG_AMMOUNT; i++) {
            System.out.println("#");
            for (int j=0; j < i; j++) {
                System.out.print(" ");
            }
            System.out.println("#");
        }
    }
}

我應該使用嵌套循環來制作這種模式,但是使用上面的代碼我做不到,

##
# #
#  #
#   #
#    #
#     #

我只是不斷得到這個作為我的輸出:

#
#
#
 #
#
  #
#
    #
#
      #
#
         #

您錯誤地調用了System.out.println()作為第一個哈希標記,該標記在不需要的位置打印了換行符。 只需將該調用更改為System.out.print() ,您應該可以進行以下操作:

 public class NestedLoopPattern {
     public static void main(String[] args) {
         final int HASHTAG_AMMOUNT = 6;

         for (int i=0; i < HASHTAG_AMMOUNT; i++) {
             // don't print a newline here, just print a hash
             System.out.print("#");
             for (int j=0; j < i; j++) {
                 System.out.print(" ");
             }
             System.out.println("#");
         }
     }
}

輸出:

##
# #
#  #
#   #
#    #
#     #

問題在於,在外循環的每次迭代中,您都在打印兩條換行符。 因此,您將打印第一個“#”,然后打印換行符,然后打印其余行。

您需要更改第一個System.out.println("#"); System.out.print("#"); ,然后它將起作用。

因此,您應該將代碼更改為此:

public class NestedLoopPattern {
    public static void main(String[] args) {
        final int HASHTAG_AMMOUNT = 6;

        for(int i = 0; i < HASHTAG_AMMOUNT; i++) {
             System.out.print("#"); //No need to print a newline here

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

             System.out.println("#");
         }
     }
}

這將為您提供預期的輸出:

##
# #
#  #
#   #
#    #
#     #

解決方案:

IntStream.rangeClosed(1, MAX)
                .forEach(i -> IntStream.rangeClosed(1, i + 1)
                        .mapToObj(j -> j == i + 1 ? "#\n" : j == 1 ? "# " : "  ")
                        .forEach(System.out::print)
                );

暫無
暫無

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

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