如何在Java中打印降序/升序的空格数量?

如何在Java中打印降序/升序的空格数量?

问题描述:

我试图打印一个数字,打印3个空格,然后是一个明星,然后下一行打印2个空格,/和一个星号,然后是1个空格,//和一个星号等。 我已经得到了打印所有斜杠和星号的代码,但我无法弄清楚如何让空格以降序打印。这是一个任务,我必须使用嵌套for循环。有什么想法吗? PS我不想要一个确切的答案(即“输入此代码”),我只是想要一个建议,试图指向正确的方向。如何在Java中打印降序/升序的空格数量?

我迄今为(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(); 
    } 
    } 
} 
+3

你试过了什么?当问到作业问题时,你必须展示你迄今为止做了什么。请阅读[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve) – Orin

+1

我建议使用两个循环。从'n'到'0'的第一个/外部循环。从'0'到'n'的内循环。使用'System.out.print'在内部循环中打印而不创建换行符。祝你好运。 – CollinD

+0

将代码粘贴为纯文本格式。 – progyammer

所以,如果我理解正确的话,你row变量从1到4,并且要在第1行,2位3位在第2行中,第3行中有1个空格,第4行中有0个空格?我建议你应该能够找到一个算术表达式(就像你已经找到了row-1的斜线数),给你每行/每行的正确数目的空格。如果我需要说更多,请随时为此答案添加评论。

+0

这真的很有用,我最终使用了表达式“(-1)* row + 4” 当尺度是9时,它的工作原理现在我只需要找出尺度变化时要使用的表达式 –

+0

很高兴帮助!你可以用'4行'来简化一下。对于规模('H')的变化,我相信你必须放入一些东西,而不是依赖于'H'的4。快乐的编码。 PS您可以通过点击其左侧的灰色勾号来标记答案。 –

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; 
    } 


} 
+0

代码很好。然而,OP特别表示“我不想要一个确切的答案(即”输入此代码“)”。 –