【问题标题】:How to print a descending/ascending number of spaces in Java?如何在Java中打印降序/升序的空格数?
【发布时间】:2016-09-23 14:16:30
【问题描述】:

我正在尝试打印一个图形,该图形先打印 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();
    }
  }
}

【问题讨论】:

  • 你试过什么?当询问家庭作业问题时,你必须展示你到目前为止所做的事情。请阅读How to create a Minimal, Complete, and Verifiable example
  • 我建议使用两个循环。从n0 的第一个/外循环。以及从0n 的内循环。使用System.out.print 在内部循环中打印而不创建换行符。祝你好运。
  • 将代码以纯文本格式粘贴到此处。
  • 很高兴在问题中有代码,这使得在评论或答案中引用它更加方便。谢谢。

标签: java spaces


【解决方案1】:

所以,如果我理解正确,您的 row 变量从 1 到 4,并且您想要第 1 行中的 3 个空格、第 2 行中的 2 个空格、第 3 行中的 1 个空格和第 4 行中的 0 个空格?我建议您应该能够找到一个算术表达式(就像您已经找到 row-1 的斜杠数一样),以便在每行/行上为您提供正确的空格数。如果我需要说更多,请随时对此答案添加评论。

【讨论】:

  • 这真的很有用,我最终使用了表达式“(-1)*row + 4”,它在比例为 9 时有效,现在我只需要弄清楚当规模变化
  • 很高兴它有帮助!您可以使用4 - row 做一些简单的事情。对于比例 (H) 的变化,我相信你必须放入一些东西,而不是依赖于 H 的 4。快乐编码。 PS 如果你认为,你可以通过点击它左边的灰色勾号标记答案正确。
【解决方案2】:
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;
    }


}

【讨论】:

  • 代码没问题。但是,OP 明确表示“我不想要一个确切的答案(即“输入此代码”)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 2020-04-09
  • 2023-01-30
  • 1970-01-01
相关资源
最近更新 更多