作者:沈驰27 | 来源:互联网 | 2023-09-25 01:53
篇首语:本文由编程笔记#小编为大家整理,主要介绍了java_Scanner类的使用相关的知识,希望对你有一定的参考价值。
参考链接:https://blog.csdn.net/android_depon/article/details/69669160
https://www.cnblogs.com/zhengchenhui/p/6008618.html
Scanner是一个基于正则表达式的文本扫描器~~可以从文件,输入流,字符串中解析出基本类型和字符串类型的值。Scanner类提供了多个构造器,不同的构造器可以接受文件,输入流,字符串作为数据源,用于从文件,输入流字符串中解析数据。
1.next( )和nextLine( )的区别
nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。
(简单点说,next我只要字,nextLine我啥都要)
1 import java.util.Scanner;
2
3
4 public class SubLoop {
5
6 public static void main(String[] args) {
7
8 String s1,s2;
9
10 Scanner sc=new Scanner(System.in);
11 System.out.print("请输入第一个字符串:");
12 s1=sc.nextLine();
13 System.out.println("输入的字符串是:"+s1);
14
15 System.out.print("请输入第二个字符串:");
16 s2=sc.next();
17 System.out.println("输入的字符串是:"+s2);
18
19 }
20 }
运行结果
next()在输入有效字符之后,将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
nextLine()方法的结束符只是Enter键
交换上述两个字符串的next和nextLine
nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法从键盘输入值。
经过验证,其他的next的方法,如nextDouble() ,nextFloat() ,nextInt() 等与nextLine()连用时都存在这个问题。
解决的办法是:
在每一个 next()、nextDouble() 、nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。(顽皮点说,因为nextLine啥都要,所以有时候要错了空格,等不到所需输入)
1 import java.util.Scanner;
2
3 public class Lianxi {
4
5 public static void main(String[] args) {
6
7 String s2;
8 int s1;
9 Scanner sc=new Scanner(System.in);
10 System.out.print("请输入第一个整数:");
11 s1=sc.nextInt();
12 sc.nextLine();
13 System.out.println("输入的整数是:"+s1);
14
15 System.out.print("请输入第二个字符串:");
16 s2=sc.nextLine();
17 System.out.println("输入的字符串是:"+s2);
18 }
19
20 }
运行结果
2.
Scanner除了可以获取键盘输入外,也可以获取文件中的内容,将文件中的内容一行一行的输入出来
如果文档在项目中
1 import java.io.File;
2 import java.io.FileNotFoundException;
3 import java.util.Scanner;
4
5
6 /**
7 * 利用Scanner读取项目中的文档
8 * */
9 public class TestScannerRead {
10
11 public static void main(String[] args){
12
13 Scanner sc;
14 try {
15 //读取项目中的文档
16 sc = new Scanner(new File("ScannerTest.txt"));
17 System.out.println("项目中的文本内容是:");
18 //通过判断是否有下一行来输出文档内容
19 while (sc.hasNextLine()) {
20 System.out.println(sc.nextLine());
21 }
22 } catch (FileNotFoundException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }
26 }
27 }
如果从本地读取文档
1 import java.io.FileInputStream;
2 import java.io.FileNotFoundException;
3 import java.util.Scanner;
4
5 /**
6 * 利用Scanner读取本地的文件
7 * */
8 public class TestScannerRead {
9
10 public static void main(String[] args){
11 FileInputStream fis;
12 try {
13 //利用文件上传功能
14 fis = new FileInputStream("D:\\\\text\\\\ScannerTest.txt");
15 //设置文件编码
16 Scanner sc = new Scanner(fis,"UTF-8");
17 System.out.println("本地文件内容:");
18 //输出文件内容
19 while (sc.hasNextLine()) {
20 System.out.println(sc.nextLine());
21 }
22 } catch (FileNotFoundException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }
26 }
27 }