【问题标题】:Print character multiple times [duplicate]多次打印字符[重复]
【发布时间】:2015-02-04 00:36:54
【问题描述】:

如何在一行中多次打印一个字符?这意味着我不能使用循环。

我正在尝试多次打印" _"

我试过这个方法,但它不起作用:

System.out.println (" _" , s);

s 是变量。

【问题讨论】:

  • System.out.println('_____'); ;-)
  • 养成检查 API 的习惯。我在Java 7 API docs for System.out 中没有看到这种方法的示例。
  • "这意味着我不能使用循环。"怎么样?
  • @ceejayoz 对于字符文字来说这有点长。 ;)

标签: java string character


【解决方案1】:

没有像您发布的那样的快捷方式...

“在一行中”是什么意思?

如果在一行代码中......请参阅 Mureinik 的回答

如果在一行中打印“_”:

改为:

Print 1 to 10 without any loop in java

    System.out.print("_");
    System.out.print("_");
    System.out.print("_");
    System.out.print("_");
    System.out.print("_");

或者

public void recursiveMe(int n) {
    if(n <= 5) {// 5 is the max limit
        System.out.print("_");//print n
        recursiveMe(n+1);//call recursiveMe with n=n+1
    }
}
recursiveMe(1); // call the function with 1.

【讨论】:

  • 当窃取和修改别人的答案时,更新 cmets 是明智的。递归解决方案的第 2 行应该有注释 // 5 is the max limit
  • System.out.println(_);不是有效的 Java 语句 :)
  • 为什么不是 System.out.println('_')? ;)
  • @jdv 是的:int _ = 5; System.out.println(_);
  • 玩得很好。但不是有效的陈述/在上下文中/。但我想我们在这里玩的是愚蠢的 Java 技巧。
【解决方案2】:

您可以使用System.out.print(" _"); 在同一行打印,以便您可以使用循环。 print 代替 println 不会追加换行符。

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

将打印:_ _ _ _ _

【讨论】:

  • 帖子声明没有循环
  • 我知道无循环条件是需要在同一行打印的连续性(println 不允许,但 print 允许)。
  • @Econy3 你说问题中没有循环?
  • @Growler 是的,但那是因为我想要在一行中。 Paco 解释了“println”和“print”的概念。
【解决方案3】:

如果您可以使用外部库,StringUtils.repeat 听起来非常适合您:

int s = 5;
System.out.println(StringUtils.repeat('_', s));

编辑:
要回答 cmets 中的问题 - StringUtils.repeat 接受两个参数 - 您想要重复的 char 和您想要的次数,并返回由该重复组成的 String。因此,在上面的示例中,它将返回一个由五个下划线组成的字符串,_____

【讨论】:

  • 你能解释一下如何使用 StringUtils.repeat 吗?
【解决方案4】:

您可以使用新的 Stream API 来实现这一点。幕后总是有一个迭代,但这是一种可能的实现方式。

Stream.generate(() -> " _").limit(5).forEach(System.out::print); // _ _ _ _ _

【讨论】:

  • 流 API。它总是让我感到惊讶。
  • ... 或者IntStream.range(0, 5).forEach(i -&gt; System.out.print(" _"));
【解决方案5】:

一次调用print/println,并使用您的变量“s”:

System.out.println(Stream.generate(() -> " _").limit(s).collect(Collectors.joining()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2020-10-18
    • 2016-06-30
    相关资源
    最近更新 更多