java Scanner理解与使用

API文档:http://www.yiibai.com/java/util/java_util_scanner.html

Scanner:中文意思是扫描仪,也就是将一份数据从一个地方扫描并显示到另外一个地方。

Scanner的类方法:

1.Scanner.hasNextLine()   、Scanner.nextLine()

		   String str = "ni hao" +"\n"+"wo shi jiming";
		   Scanner scan = new Scanner(str);
		   System.out.println(scan.nextLine());
		   System.out.println(scan.hasNextLine());
		   System.out.println(scan.nextLine());
		   System.out.println(scan.hasNextLine());

 
  
输出结果:

ni hao
true
wo shi jiming
false

                   String str = "ni hao" +"\n"+"wo shi jiming";
		   Scanner scan = new Scanner(str);
//		   System.out.println(scan.nextLine());
		   System.out.println(scan.hasNextLine());
		   System.out.println(scan.nextLine());
		   System.out.println(scan.hasNextLine());
注释掉红色那一行
输出结果

true
ni hao
true

                   String str = "ni hao" +"\n"+"wo shi jiming";
		   Scanner scan = new Scanner(str);
		   
		   System.out.println(scan.hasNextLine());
		   System.out.println(scan.nextLine());
		   System.out.println(scan.hasNextLine());
		   System.out.println(scan.nextLine());
调换hasNextLine()和nextLine()的顺序

输出结果

true
ni hao
true
wo shi jiming

上面三次测试给我们的信息是,scanner好比一个带游标或者指针的扫描仪,调用其hasNextLine()好比将游标向前探索直到遇到一个换行符,如果这个过程中遇到字符串对象则返回true并且游标复位。调用其nextLine()方法其实就是游标向前探索直到遇到一个换行符,此时并不复位,而是游标直接定位到目标数据的下一行,并返回探索过程中检测到的数据包括空格。

 2.next()、nextLine()

            Scanner scan = new Scanner(System.in);
            System.out.println("next方式接收:");
            String nextStr1 = scan.next();
            String nextStr2 = scan.next();
            System.out.println("next()输入结果:\n"+nextStr1+nextStr2);
            System.out.println("nextLine方式接收:");
            String nextLineStr = scan.nextLine();
            String nextLineStr2 = scan.nextLine();
            System.out.println("nextLine()输入结果:\n"+nextLineStr+"\n"+nextLineStr2);


输出的结果

1.next方式接收:
2.ni hao 
3.next()输入结果:
4.nihao
5.nextLine方式接收:
6.ni hao
7.nextLine()输入结果:
8.       
9.ni hao


其中红色字体为控制台的输入,绿色字体为输出。不知你有没有注意到第八行输出为空。这一行输出是nextLineStr中存的数据,为什么是一个空行呢?

先说一下next()扫描的方式,next()每当遇到一个空格或者换行都会停止扫描并返回数据,但数据里并不包含空格,并且游标停留在换行符前面。这时执行第一个nextLine(),消化掉换行符(游标跳到下一行),但此时返回的数据是空的,并不包含换行符。(否则例子中就会空出两行)测试一下发现返回数据里面包含一个空格。原理我就不是很清楚了。




你可能感兴趣的:(java Scanner理解与使用)