Scanner的工作方式
nextInt,nextDouble,next等都是令牌读取方法。nextLine不是令牌读取方法。
令牌读取方法的工作方式:
首先跳过任意分隔符,然后读取一个以分隔符结束的令牌。然后对应于nextByte,nextInt,nextLong方法,这个令牌会分别自动转换为一个byte,int,long。
Next,nextLine都读取一个字符串
Next是读取分隔符分割的字符串 nextline读取的是以行分隔符分割的行。
行分割符是系统定义的。在windos平台是\r\n,在unix是\n,为了得到特定平台下的行分割符
使用:String lineSeparator = System.getProperty(“line.separator”);
令牌读取方式不能读取令牌后面的分隔符。如果在令牌读取方法后面调用nextline那么,从分隔符开始,到行分隔符进行读取。行分隔符也会读取但是不作为字符串的部分。
注意在next后面跟随nextline 会出现一些情况
例如
Scanner input = new Scanner(system.in);
Int intvalue= input.nextInt()
String line = input.nextLine();
输入 34 123 回车
Intvalue是34 line是空格加123;
如果输入时 34 回车 123 回车(其实输入34后按回车程序就已经结束了)
Intvalue还是34,line是空字符串。