如何打印新的生产线的多个整数Java中

如何打印新的生产线的多个整数Java中

问题描述:

我盘算如何打印的4个整数在单独的行通过键入只有一个System.out.println结果(我猜的输入量,是程序员更好)。如何打印新的生产线的多个整数Java中

预期输出:

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); 
    } 
} 
+0

要在此格式化,您可以在键盘上使用“空格键”;) – azro

+1

尝试使用'System.out.println(a +“\ n”+ b +“\ n”+ c +“\ n” + d);' –

+1

这就是我正在寻找YCF_L,我如何投票给你哈哈?是的,我用空间来格式化代码,但我需要在每一行使用空间每次? –

你可以做我有几种方法:

这将打印变量,每个new-line char之间:

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

你也可以用meth OD参考和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) 

您可以使用 '\ n' 在Java中创建一个新的生产线,所以你的代码应该是这样的:

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

这将在新行中打印出来。

通过只输入一次打印4个整数的结果'system.out.println'。

很简单,您需要在您要打印的文本中添加一个换行字符。在大多数机器上,这由特殊字符\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),它代表 “打印格式”。它具有参数%n,它创建一个新行,内部也使用System.lineSeparator()

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

%d是许多像int的占位符。它用后面列出的参数替换所有占位符。

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


如果你看一下使用流和Lambda表达式一个的Java 8的解决方案,那么你可以使用此代码(documentation):

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

它首先创建一个(像在这种情况下,一个容器)牵着你的变量,然后调用打印方法其每个的元素。请注意,代码本身称为打印方法现在4次,不是只有一次。但它看起来相当紧凑。

您可以查看“相当于”下面的代码:

int[] values = new int[]{a, b, c, d}; 

for (int value : values) { 
    System.out.println(value); 
} 

不要只用"\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); 
+0

非常感谢,第一种方式似乎很聪明,没有使用“\ n”,但我现在不真正了解它,我会读更多关于它,但看起来像这样是最好的方法! –

+1

@GeorgiMichev只要看看其他答案,他们详细解释了方法。 – Zabuza

+0

为什么不是forEachOrdered()? –

您将要使用的换行符。在java中它是\n
要使用你所拥有的打印出来,这将是:

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

随着System.out.format可以输出使用%n格式取决于系统的行分隔符;您还可以将其他数字格式添加到格式字符串中。

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

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

这满足单一的通话您所陈述的要求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())));