teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

なんか疲れてて作文が変

2020/06/18 11:00

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  原因
2
2
  ---
3
- 二行目の入力は、一行目の値に関わらず常に一行に収まります。
3
+ 二行目の入力(A B C)は、一行目の値(3)に関わらず常に一行に収まります。
4
4
  ですので、ご提示のコードのようにnextLineを繰り返すのは不適切です。
5
5
  > ```Java
6
6
  for(int i=0;i<a;i++) {
@@ -10,9 +10,11 @@
10
10
  }
11
11
  > ```
12
12
 
13
+ 複数行読んでしまってはいけないのです。
14
+
13
15
  対策
14
16
  ---
15
- 一行読んでから空白区切りにすれば良いで
17
+ 一行読んで、それを空白区切りにすれば良いでしょう
16
18
  ```Java
17
19
  String line = sc.nextLine();
18
20
  System.out.println(line);
@@ -22,8 +24,11 @@
22
24
  }
23
25
  ```
24
26
 
27
+ ただし、これだけでは想定どおり動作しません。
25
- また、直前にnextIntを呼んでいるため、改行コードが残っていることにも留意せねばなりません
28
+ 直前にnextIntを呼んでいるため、改行コードがバッファに残ってしまっているのです
29
+
26
- 解決策はいくつかあります。例えば、次のような。
30
+ 解決策はいくつかあります。
31
+ 次のようにScanner#skipを利用するのも一手でしょう。
27
32
  ```Java
28
33
  int a = sc.nextInt();
29
34
  sc.skip("\n");

1

成形

2020/06/18 11:00

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  ```
24
24
 
25
25
  また、直前にnextIntを呼んでいるため、改行コードが残っていることにも留意せねばなりません。
26
- 解決策はいくつかあります。例えば、次のよう
26
+ 解決策はいくつかあります。例えば、次のよう
27
27
  ```Java
28
28
  int a = sc.nextInt();
29
29
  sc.skip("\n");