[英]How to print a descending/ascending number of spaces in Java?
我正在嘗試打印一個圖形,先打印 3 個空格,然后是一個星號,然后下一行打印 2 個空格,/ 和一個星號,然后是 1 個空格,// 和一個星號等等。 我有打印所有斜線和星號的代碼,但我不知道如何讓空格以降序打印。 這是一個作業,我必須使用嵌套的 for 循環。 有什么想法嗎? PS我不想要一個確切的答案(即“輸入此代碼”),我只想要一個建議來嘗試將我指向正確的方向。
到目前為止我所擁有的是(H 是比例):
public class Pattern { //program that prints a boxed-in design
public static final int H = 9;
public static void main(String[] args) {
line();
design();
}
public static void line() {
System.out.print("+");
for (int d=1; d <=H-2; d++) {
System.out.print("-");
}
System.out.println("+");
}
public static void design() {
top();
}
public static void top() {
for (int row = 1; row <=H-2; row++){
System.out.print("|");
for (int sp =3; sp>=1; sp--){
System.out.print(" ");
}
for (int fsl=1; fsl<=row-1; fsl++){
System.out.print("/");
}
for (int star=1; star<=1; star++){
System.out.print("*");
}
for (int bsl=1; bsl<=row-1; bsl++){
System.out.print("\\");
}
System.out.print("|");
System.out.println();
}
}
}
因此,如果我理解正確,您的row
變量從 1 到 4,並且您想要第 1 行 3 個空格、第 2 行 2 個空格、第 3 行 1 個空格和第 4 行 0 個空格? 我建議您應該能夠找到一個算術表達式(就像您已經找到row-1
的斜杠數)來為每行/行提供正確的空格數。 如果我需要說更多,請隨時在此答案中添加評論。
package com.acme; import java.util.stream.IntStream; import java.util.stream.Stream; import static java.util.Comparator.reverseOrder; public class PrintIt { public static void main(String[] args) { printSpacesWithStar(10, Order.ASC); printSpacesWithStar(10, Order.DESC); } private static void printSpacesWithStar(int numbers, Order order) { Stream<Integer> streamOfInt = IntStream.rangeClosed(1, numbers) .boxed(); switch (order) { case ASC: streamOfInt .sorted(reverseOrder()) .forEach(Test::printingLogic); break; case DESC: streamOfInt .forEach(Test::printingLogic); break; } } private static void printingLogic(Integer currentValue) { for (int k = 1; k < currentValue; k++) { System.out.print(" "); } System.out.println("*"); } enum Order { ASC, DESC; } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.