您的位置:首页 > 编程语言 > Java开发

Java Scanner类从控制台读取输入

2017-09-15 20:12 561 查看

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,回车,会发生什么情况呢?

第一个
4000
回车处就会结束,将会得到
intValue
34
line
是一个空字符串。因为令牌读取方法
nextInt()
读取
34
,然后在行分隔符处停止,
nextLine()
读取到行分隔符结束处,所以是空的。

String类使用
plit
方法分隔字符串,使用
trim()
方法去除首尾空白

plit
方法

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
是属性不是方法,不需要加括号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: