2017-08-26 45 views
0

我盤算如何打印的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,我如何投票給你哈哈?是的,我用空間來格式化代碼,但我需要在每一行使用空間每次? –

回答

1

你可以做我有幾種方法:

這將打印變量,每個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) 
3

您可以使用 '\ n' 在Java中創建一個新的生產線,所以你的代碼應該是這樣的:

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

這將在新行中打印出來。

2

通過只輸入一次打印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); 
} 
1

不要只用"\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()? –

1

您將要使用的換行符。在java中它是\n
要使用你所擁有的打印出來,這將是:

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

隨着System.out.format可以輸出使用%n格式取決於系統的行分隔符;您還可以將其他數字格式添加到格式字符串中。

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

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

1

這滿足單一的通話您所陳述的要求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())));