暫く書いていなかったため,全く忘れておりました.入力受取りを脳死で行うメモです.
共通項
import文でScannerを呼んでくる.
import java.util.*;
Scanner
クラスにSystem.in
を渡す.
Scanner sc = new Scanner(System.in);
文字列の受取り
$S$を文字列とする.
String S = sc.next();
String S = sc.nextLine();
ただし,next
は入力値を改行まで認識し,nextLine
は空白まで認識する.たとえば
$S_1$ $S_2$
$S_3$
という入力があった場合,next
では$S_1$ $S_2$を読み取り,nextLine
では$S_1$を読み取る.
数値の読み取り
$x$を数値とする.パースをInteger.parseInt()
で行うと2倍程度速いらしい.
int x = Integer.parseInt(sc.nextLine());
int x = sc.nextInt();
配列の読み取り
$V_1, V_2, \cdots V_n$を配列V
とする.
Integer V[] = new Integer[N];
for (int i=0; i<N; i++) {
V[i] = sc.nextInt();
}
以下だと可読性が低い.
String a = sc.nextLine();
String[] b = a.split(" ");
int[] c = Stream.of(b).mapToInt(Integer::parseInt).toArray();
Listの読み取り
$V_1, V_2, \cdots V_n$をListV
とする.
ArrayList<String> V = new ArrayList<String>();
for (int i=0; i<N; i++) {
V[i] = sc.nextInt();
ary.add(word);
}
Scanner
を自作することでより高速化が望めるらしい.