如何在 Java 中的新行上打印多个整数
Posted
技术标签:
【中文标题】如何在 Java 中的新行上打印多个整数【英文标题】:How to print multiple integers on new lines in 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 的解决方案。您可以对 cmets 进行投票,但这并不影响他的声誉。
接受是什么意思,我该怎么做?哦,我想..好的,谢谢:)
【参考方案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);
%d
是 int
等数字的占位符。它用后面列出的参数替换所有占位符。
这里是该方法接受的所有参数的完整列表: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 方法中将使用哪种类型的数据。 谢谢。
【讨论】:
以上是关于如何在 Java 中的新行上打印多个整数的主要内容,如果未能解决你的问题,请参考以下文章