关于java中Scanner的用法,我就不再重复。在此说一下使用需要注意的事项
先看实例代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
inAndOut();
}
public static void inAndOut()
{
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println("str:"+str);//输出字符串的内容
int num = scanner.nextInt();
System.out.println("num:"+num);//输出数字的内容
String newLine = scanner.nextLine();
System.out.println("newLine:"+newLine);//输出新行内容
System.out.println("newLine==?\"\"====》"+newLine.equals(""));//比较一下是不是为空串
}
}
看结果(绿色为输入,黑色是输出)
字符串
str:字符串
123
num:123
newLine:
newLine==?""====》true
注意,原本计划在输入123敲回车之后再输入内容的,但是123输完回车一敲,程序运行结束了。
我的天哪,这么神奇吗?难道scanner.nextLine()为空串吗?
等等,我们换一种方式输入,我们将所有内容输在一行:
字符串 123 字符串啊!!!!!!!!!
str:字符串
num:123
newLine: 字符串啊!!!!!!!!!
newLine==?""====》false
(貌似这种情况下才是我想要的真爱。)
再换一种输入呢?我把头两个放在一行,数字后面的单独作为一行试试。
当我输入123,按回车后,结果就出来了。。。。。。。。。我还没来得及输最后的一行啊。。。。!!!
字符串 123
str:字符串
num:123
newLine:
newLine==?""====》true
三种方式,两种是在输入数字后按回车,就直接出结果了,而且紧接着的scanner.nextLine()为空串。还有一种是输入数字123加上空格,后面跟内容,这种方式,可以正确赋值给我的变量。
好像譬如nextInt(), nextDouble(),nextXXX() 这些方法只能读取指定格式的内容,甚至在行末,读完之后,它不会自动换行(即使是在行末),所以每次123读完之后的nextLine()都是空串。。。。。。但是我们用nextLine()的时候它就不会,它会整行一起读完,没错,就是这样的。反正我是信了的。