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

java中Scanner类nextLine()、next()、hasNext()等总结

2017-08-26 11:12 423 查看

一、java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。

使用Scanner类可以很方便地便获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流 、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可接受文件、输入流、字符串作为数据,用于从文件、输入流、字符串中解析数据。

二、Scanner主要提供了两个方法来扫描输入:

(1) hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,可以省略Xxx.

(2) nextXxx():获取下一个输入项。Xxx的含义与前一个方法中Xxx相同。

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();


Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}


三、事实上,Scanner提供了两个简单的方法来逐行读取:

(1) boolean hasNextLine():返回输入源中是否还有下一行。

(2)String nextLine():返回输入源中的下一行的字符串。

四、关于分割符

在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。

Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf    ......asdfkl    las");
//Scanner使用useDelimiter(String pattern)方法设置分隔符。下面设置使用回车作为分隔符,
//sc.useDelimiter("\n");
while (s.hasNext()) {
System.out.println(s.next());
}
}
结果:
123
asdf
sd
45
789
sdf
asdfl,sdf.sdfl,asdf
......asdfkl
las


五、next() 、nextLine()区别

1.next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。next方法不能得到带空格的字符串。

2. nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的

3. next()和nextLine(),这两个方法返回的都是String类型的

package sort;

import java.util.Scanner;

public class Main{
public static void main(String[] args){
String str = null;
String str2;
Scanner in = new Scanner(System.in);
while(in.hasNext()){
str2 = in.next();
System.out.println("next:");
System.out.println(str2);
str = in.nextLine();
System.out.println("nextLine:");
System.out.println(str);

str = null;
}
in.close();
}
}


结果:

asd kjls
next:
asd
nextLine:
kjls


关于结束hasNext():

想要结束循环,在Windows环境下,需要输入Ctrl+Z;而在Unix环境下,需要输入Ctrl+D。注意,这是输入,而不是对控制台进行操作。这相当于向控制台输入一个字符,这个字符代表EOF,此时hasNext()方法返回false,循环结束。

例子:

public static void main(String[] args){
String str = null;
Scanner in = new Scanner(System.in);
System.out.println("请输入,按Enter键换行,按Ctrl+Z结束。");
while(in.hasNext()){
str = in.nextLine();
System.out.println(str);
str = null;
}
in.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java总结