【问题标题】:How to print multiple integers on new lines in Java如何在 Java 中的新行上打印多个整数
【发布时间】:2017-08-26 13:19:24
【问题描述】:

我正在研究如何通过输入 only one System.out.println打印 4 个整数的结果在不同的行更适合编码人员)。

预期输出:

43 
1 
19 
13

我的代码:

class JavaApplication1 {
     public static void main(String[] args) {
         int a,b,c,d;
         a = -5 + 8 * 6;
         b = (55+9) % 9;
         c = 20 + -3*5 / 8;
         d = 5 + 15 / 3 * 2 - 8 % 3 ;

         System.out.println(a);
         System.out.println(b);
         System.out.println(c);
         System.out.println(d);
    }  
}

【问题讨论】:

  • 要在此处格式化,您只需在键盘上使用“空格键”;)
  • 尝试使用System.out.println(a + "\n" + b + "\n" + c + "\n" + d);
  • 这正是我要找的 YCF_L,我该如何投票给你,哈哈是的,我使用空间来格式化代码,但我需要在每行每次都使用空间?
  • 只需投票并接受其中一个答案,它们还包含@YCF_L 的解决方案。您可以对 cme​​ts 进行投票,但这并不影响他的声誉。
  • 接受是什么意思,我该怎么做?哦,我想..好的,谢谢:)

标签: java output text-formatting


【解决方案1】:

您可以使用 '\n' 在 Java 中创建一个新行,因此您的代码如下所示:

System.out.println(a + "\n" + b + "\n" + c + "\n" + d);

这会将它们打印在新的行上。

【讨论】:

    【解决方案2】:

    键入仅一次“system.out.println”,将 4 个整数的结果打印在不同的行上。

    很简单,您需要在要打印的文本中添加一个换行符。在大多数机器上,这由特殊字符 \n 表示。

    String output = a + "\n"
        + b + "\n"
        + c + "\n"
        + d;
    System.out.println(output);
    

    但是,有 平台无关 方法,例如方法 System.lineSeparator() (documentation) 返回的方法。喜欢:

    String lineSeparator = System.lineSeparator();
    String output = a + lineSeparator
        + b + lineSeparator
        + c + lineSeparator
        + d;
    System.out.println(output);
    

    您也可以使用 System.out.printf 方法 (documentation),它代表“print formatted”。它具有创建新行的参数%n,内部也使用System.lineSeparator()

    System.out.printf("%d%n%d%n%d%n%d%n", a, b, c, d);
    

    %dint 等数字的占位符。它用后面列出的参数替换所有占位符。

    这里是该方法接受的所有参数的完整列表:Formatter-Syntax


    如果您正在寻找使用 Streams 和 Lambdas 的 Java 8 解决方案,那么您可以使用以下代码 (documentation):

    IntStream.of(a, b, c, d).forEachOrdered(System.out::println);
    

    它首先创建一个 (在这种情况下类似于容器)保存您的变量,然后调用 print 方法 每个它的元素。请注意,代码本身现在调用 print 方法 4 次不是一次。但它看起来很紧凑。

    您可以查看它“等效”到以下代码:

    int[] values = new int[]{a, b, c, d};
    
    for (int value : values) {
        System.out.println(value);
    }
    

    【讨论】:

      【解决方案3】:

      你可以用几种方法来做:

      这将打印变量和每个new-line char

      System.out.println(a + "\n" + b + "\n" + c + "\n" + d);
      

      您也可以使用方法引用和Arrays,这将从您的4个变量组成的数组中创建一个动态列表,并将System.out::println应用于每个变量:

      Arrays.asList(a,b,c,d).forEach(System.out::println);
      

      IntStream.of(a,b,c,d).forEach(System.out::println);
      

      使用基本的for each loop也可以是一种方式:

      for (int i : new int[]{a, b, c, d})
           System.out.println(i);
      

      也可以使用format 打印:

      System.out.printf("%d%n%d%n%d%n%d%n",a,b,c,d)
      

      【讨论】:

        【解决方案4】:

        使用System.out.format,您可以使用%n 格式输出与系统相关的行分隔符;您还可以在格式字符串中添加更多数字格式。

         System.out.format("%d%n%d%n%d%n%d%n", a, b, c, d);
        

        【讨论】:

          【解决方案5】:

          不要只使用"\n",它是一个换行符。这取决于平台,如果您在 Windows 记事本上查看包含由 "\n" 分隔的行的输出,您将看不到您所期望的。

          改用这个:

          System.out.printf("%s%n%s%n%s%n%s%n", a, b, c, d);
          

          或者:

          IntStream.of(a, b, c, d).forEach(System.out::println);
          

          【讨论】:

          • 非常感谢,第一种方法似乎很聪明,没有使用“\n”,但我现在不太明白,我会阅读更多关于它的内容,但看起来这是最好的方法!
          • @GeorgiMichev 看看其他答案,他们详细解释了方法。
          • 为什么不 forEachOrdered() ?
          • @PatrickParker 这将对并行流产生影响。一般来说,forEachOrdered 将是正确的使用。在这种情况下,我知道它绝对不是并行流。如果我使用forEachOrdered,除了输入一些额外的字符之外不会受到任何惩罚。
          【解决方案6】:

          您将需要使用换行符。在java中它是\n
          要使用您现有的打印它们,它将是:

          System.out.println(a + "\n" + b + "\n" + c + "\n" + d);
          

          【讨论】:

            【解决方案7】:

            这满足了您对单个调用System.out.println 的声明要求,使用独立于平台的行分隔符,并避免重复键入相同的连接操作:

               System.out.println(IntStream.of(a,b,c,d).mapToObj(Integer::toString)
                       .collect(Collectors.joining(System.lineSeparator())));
            

            这是一个更通用的版本,适用于任何对象,而不仅仅是整数:

               System.out.println(Stream.of(a,b,c,d).map(Object::toString)
                       .collect(Collectors.joining(System.lineSeparator())));
            

            【讨论】:

              【解决方案8】:

              您也可以选择使用System.out.printf("%d%n%d%n%d%n%d%n",a,b,c,d)

              【讨论】:

                【解决方案9】:

                java中有不同的打印语句

                1.println

                System.out.println(1+"\n"+2+"\n"+3+"\n"+4);

                2.打印

                System.out.print("\n"+1); System.out.print("\n"+2); System.out.print("\n"+3); System.out.print("\n"+4);

                3.printf

                System.out.printf("%d%n%d%n%d%n%d%n",1,2,3,4);

                其中 %d 和 %n 称为格式说明符,它们指定在 printf 方法中将使用哪种类型的数据。 谢谢。


                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-02-14
                  • 2014-06-28
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-08-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多