写给自己留个记录,同时也希望能帮助到你们~
技术交流群:167692269
----------------------
结论;
1.nextLine()是 无论赋值与否 都 以回车结束
2.next(),nextInt()等等是 必须赋值后 才 以空格或回车结束。(若是没有赋值,则一直不会进行到下一步的读取。)
实际应用一:
import java.util.Scanner;
public class shiyan08 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
String x=sc.nextLine();
System.out.println("---"+n+"---");
System.out.println("---"+m+"---");
System.out.println("---"+x+"---");
}
}
输入:
4
2
---4---
---2---
------
原因:
输入4后,回车。4被赋值给n。
同时,回车也作为x的结束符,(因为之前4被赋值给n),所以x空字符串。
接着,输入2,回车。2赋值给m。
输出如上。
解决办法:
public class shiyan08 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine(); //接收一个回车。以防止第一个回车 作为 x 的结束符,使得x被赋值为空字符串。
int m=sc.nextInt();
sc.nextLine();
`
//接收一个回车,以防止第二个回车 作为 x的结束符,使得x被赋值为空字符串。String x=sc.nextLine();System.out.println("---"+n+"---");System.out.println("---"+m+"---");System.out.println("---"+x+"---");}}
如果需要按到回车时,加一个sc.nextline()接收这个回车符。 以防止 需要用到回车符
(如给 x 赋值)时, 之前的回车被错误的当成x 的结束标志了。
输入:
4
2
我终于能输入了
输出:
---4---
---2---
---我终于能输入了---
实际应用二:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
String x=sc.nextLine();
System.out.println(n+m);
}
1 4 56
输出:
5
输入1后,空格。1被赋值给n。
然后4后面又有一个空格,4被赋值给了m。
n,m已经接收完毕。所以后面输入多少都不会被接收了。
所以输出是5.
--------------
若是有什么疑问或者新的见解,,欢迎讨论~
技术交流群:167692269