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中Scanner的nextInt(),next(),nextLine()方法总结
- java中Scanner类next()和nextline()注意事项
- java中Scanner类nextLine()和next()的区别和使用方法
- java中Scanner类nextLine()和next()的区别和使用方法
- Java中Scanner类nextLine()与其他next()方法连用的问题
- Java的Scanner类中next()方法与nextLine()方法的区别
- 关于java中的Scanner类中的nextLine方法与next方法的区别
- 以OJ2024C语言合法标识符介绍java中Scanner类中nextLine()方法与next()或nextInt()
- Java的Scanner类中next()方法与nextLine()方法的区别
- Java中Scanner的nextInt(),next(),nextLine()方法总结
- Java中Scanner类的next()和nextLine()区别
- java中Scanner类nextLine()和next()的区别和使用方法
- java中Scanner类中的next()和nextLine()方法的区别
- java中Scanner类nextLine()和next()的区别和使用方法
- Java中Scanner类的next()和nextLine()方法对比
- JAVA Scanner类里next方法和nextLine方法的区别
- java--Scanner类的用法(next()和nextLine()的区别)
- java中Scanner类nextLine()和next()的区别和使用方法
- 总结Java中的next()和nextLine()方法的区别
- java中Scanner类next()和nextLine()的区别