java_Scanner类的使用

发表于:魔客站 2019-4-15 分类:建站教程 阅读: 22

标签:code   next   system.in   inf   line   https   构造   exce   tab   

参考链接: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 block24             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 block24             e.printStackTrace();25         }26     }27 }

 

java_Scanner类的使用

标签:code   next   system.in   inf   line   https   构造   exce   tab   

原文地址:https://www.cnblogs.com/bfcs/p/10340002.html