今天在测试Scanner输入问题时候,偶然间发现JAVA在处理先输入一个int数然后在接收一整行字符串输入时候会出现一些意想不到的问题,遂记下,也给大家做个参考.
代码区:
import java.util.Scanner;
public class SannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
String str = scanner.nextLine();
System.out.println("你输入的是 :x="+x+",str = "+ str);
}
}
这个结果是:
9
你输入的是 :x=9,string =
这显然不是咱们想要的结果.
后来经多方查证,发现原来是虚拟机把换行符(\r\n)当做了输入的"string"直接传递给str了.
解决问题:
1.重新创建一个scanner对象.使用它接收String输入,这样就规避了上面的问题
2.在明确接收输入是字符串时候不要使用nextLine(),使用next()无此问题