2018-3-8 next(),nextInt(),nextLine()に関する疑問と理解を記録する
2079 ワード
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d=scan.nextDouble();
String s=scan.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
これは私が準備し始めたコードです.入力すると
42
3.1415
Welcome to Java!
出力は
String:
Double: 3.1415
Int: 42
どうして
String s=scan.nextLine();
このコードは実行されていないように見えますか?実はそうではありません.まずnext()メソッド、nextInt()メソッド、nextLine()メソッドの解釈を見てみましょう
nextInt(): it only reads the int value, nextInt() places the cursor in the same line after reading the input.
next(): read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same lineafter reading the input.
nextLine(): reads input including space between the words (that is, it reads till the end of line ). Once the input is read, nextLine() positions the cursor in the next line.コード内でdouble d=scan.nextDouble();完全な読み取りではなく、doubleの数値部分だけを読み取る、残りの数値の後ろの「」部分は読み取らないので、String s=scan.nextLine();最初はdoubleの残りの数値の後ろの「」部分を読み取っていましたが、このような「行列現象」を避けるにはどうすればいいのでしょうか.
double d=scan.nextDouble();
String s=scan.nextLine();
実はとても简単で、もし1行を読みたいならば、私达は先にdoubleの后の空白の部分を読み出して、double d=scan.nextDouble();コードを追加しますscan.nextLine();
public class mmm {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
double d=sc.nextDouble();
sc.nextLine();
String s=sc.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
出力結果:
42
3.1313
welcome to java
String: welcome to java
Double: 3.1313
Int: 42
個人的に理解して、不足があれば指摘して、感謝します!