JAVA基础类库——使用Scanner获取键盘输入

        使用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设置分隔符使用useDelimiter(String pattern)方法即可,该方法的参数应该是一个正则表达式,只需要把上面程序中粗体代码行的注释去掉,该程序就会把键盘的每行输入当成一个输入项,不会以空格、Tab空白等作为分隔符。

      事实上,Scanner提供了两个简单的方法来逐行读取。

  • boolean hasNextLine():返回输入源中是否还有下一行。
  • String nextLine():返回输入源中下一行的字符串。

注意:Scanner的读取操作可能被阻塞(当前执行顺序流暂停)来等待信息的输入。如果输入源没有结束,Scanner又读不到更多输入项时(尤其在键盘输入时比较常见),Scanner的hasNext()和next()方法都有可能阻塞,hasNext()方法是否阻塞与和其相关的next()方法是否阻塞无关。


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

public class ScannerFileTest
{
    public static void main(String[]args) throws Exception
    {
      Scanner sc=new Scanner(new File("ScannerFileTest.java"));
      System.out.println("ScannerFileTest.java 文件内容如下:");
      while(sc.hasNextLine())
      {
        System.out.println(sc.nextLine());
      }
    }
}
因为上面程序涉及文件输入,可能引发文件IO相关异常,故主程序声明throws Exception表名main不处理任何异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值