Scanner获取键盘输入

来源:互联网 发布:小岛秀夫离职原因知乎 编辑:程序博客网 时间:2024/06/05 08:44

java.util.Scanner是JDK1.5的新特性,主要功能是简化文本扫描。

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

Scanner主要提供了两个方法来扫描输入。
①hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串,直接使用hasNext()。

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

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

public class ScannerKeyBoardTest{    public static void main(String[] args)    {        //System.in代表标准输入,就是键盘输入        Scanner sc = new Scanner(System.in);        //增加下面一行将只把回车作为分隔符        sc.useDelimiter("\n");        while(sc.hasNext())        {            //输出输入项            System.out.println("键盘输入内容是:" + sc.next());        }    }}

如果希望改变Scanner的分隔符(不使用空白作为分隔符),例如,程序需要每次读取一行,不管这一行中是否包含空格,Scanner都把它当成一个输入项。在这种需求下,可以把Scanner的分隔符设置为回车符,不再使用默认的空白作为分隔符。

Scanner的读取操作可能被阻塞来等待信息的输入。如果输入源没有数。Scanner又读不到更多输入项时(尤其是在键盘输入时比较常见),Scanner的hasNext()和next()方法都可能阻塞,hasNext()方法是否阻塞与其相关的next()方法是否阻塞无关

Scanner设置分隔符使用useDelimiter(String pattern)方法即可,该方法的参数应该是一个正则表达式。

Scanner提供了两个简单的方法来逐行读取。
boolean hasNextLine():返回输入源中是否还有下一行。

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

Scanner不仅能读取用户的键盘输入,还可以读取文件输入,只要在创建Scanner对象时传入一个File对象作为参数,就可以让Scanner读取该文件的内容。

public class ScannerFileTest{    public static void main(String[] args)    throws Exception    {        //将一个File对象作为Scanner的构造器参数,Scanner读取文件        Scanner sc = new Scanner(new         File("ScannerFileTest.java"));         System.out.println("ScannerFileTest.java         文件内容如下:");         //判断是否还有下一行         while(sc.hasNextLine())         {             //输出文件中的下一行             System.out.println(sc.nextLine());         }    }}

上面程序会读取ScannerFileTest.java文件中的内容。上面使用了hasNextLine()和nextLine()两个方法来读取文件内容。

因为上面程序设计文件输入,可能会引发文件IO异常。

0 1
原创粉丝点击