個人的備忘録

プログラミングとか勉強した事のまとめ

sc.nextIntとsc.nextLineでは末尾の空白を削除する機能が違う

コードの練習をしていたところ、一部のケースでScannerクラスを使った文字列の読み込みにズレが生じる不具合があったので原因を調べたところ、

nextInt()の後にnexiLine()を打つと空白文字を読み込んでしまって上手く行かなかった事が判明した。

配列を読み込んでカンマを足す文を打ち込んでいたのだが、当初は

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.print("Hello ");

for (int i =1; i < num; i++) {
String name = sc.nextLine();
System.out.print(name + ",");
}

String lastName = sc.nextLine();
System.out.print(lastName + ".");
}
}

と打っていたところ(最後だけ別に出力してるのは別の文字を付加するため)、最初に空白を打ち出してしまって原因がわからずに悩んでいたのだが、調べてみるとnextInt()には末尾の空白を削除する機能がなく、nextLine()には空白を削除する機能があるというだけの話だということがわかった。