java.util.Scanner
创建Scanner类的对象,以获取来自 System.in
的输入:
Scanner input = new Scanner(System.in);
读取数据前先使用 hasNextXxx()
方法判断是否存在数据输入,不同数据类型方法不同:
input.hasNext();
input.hasNextByte();
input.hasNextShort();
input.hasNextInt();
input.hasNextLong();
input.hasNextDouble();
input.hasNextLine();
使用 nextXxx()
方法读取输入,可以用空格或回车键作为分隔符:
input.next();
input.nextByte();
input.nextShort();
input.nextInt();
input.nextLong();
input.nextDouble();
input.nextLine();
注意:没有 nextChar()
方法
next()和nextLine()的区别:
next()
- next() 读取分隔符前的一个字符串,不能得到带有空格的字符串;
- 一定要读取到有效字符后才可以结束输入;
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符,对输入有效字符之前遇到的空白,next() 方法会自动将其去掉;
nextLine()
- nextLine()读取一行文本,即一按下回车键为结束标志;
- 可以获得空格;
实例说明
next()
nextByte()
nextShort()
nextInt()
nextLong()
nextDouble()
nextLine()
都称为“令牌读取方法”,因为他们会读取用分隔符分隔开的令牌。默认情况下,分隔符是空格,可以使用useDelimiter(String regex)
方法设置新的分隔符模式。
nextLine()
读取一个以行分隔符结束的行,行分隔符是由系统定义的,从键盘输入以回车键结束,对应\n
字符。
如下代码执行:
Scanner input = new Scanner(System.in);
int intValue = input.nextInt();
String line = input.nextLine();
- 如果输入34,空格,567,回车,会发生什么情况呢?
intValue
是34
,line
是567
(空格,567)。 - 如果输入34,回车,567,回车,会发生什么情况呢?
第一个回车处就会结束,将会得到intValue
是34
,line
是一个空字符串。因为令牌读取方法nextInt()
读取34
,然后在行分隔符处停止,nextLine()
读取到行分隔符结束处,所以是空的。
String类使用 split
方法分隔字符串,使用 trim()
方法去除首尾空白
split
方法String s = "sfsdafd adfdsaf adf af"; String[] strs = s.split("\\s+"); //以空白分隔字符串 for(int i = 0; i < strs.length; i ++){ System.out.println(strs[i]); }
输出结果:
sadfssdg adfs sf
trim()
方法String s = " sadfssdg adfs sf "; s = s.trim(); System.out.println(s);
输出结果:
sadfssdg adfs sf
String中 length
是属性不是方法,不需要加括号。