• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java中的Scanner简述(企业笔试在线编程的输入控制)

Java中的Scanner简述(企业笔试在线编程的输入控制)

作者:Rico's Blogs 字体:[增加 减小] 来源:互联网 时间:2017-07-23

Rico's Blogs通过本文主要向大家介绍了Scanner类使用,在线编程输入控制,企业面试笔试注意事项等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

摘要:

  最近进行企业在线笔试时,发现企业的笔试平台大都使用赛码网(虽然槽点很多),而且在线编程都需要使用Scanner来读取程序的输入,因此,笔者就在先辈们的成果上对Scanner做了一份全新的、详细的总结。我们知道,java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地,特此简述。


版权声明:

本文原创作者:书呆子Rico
作者博客地址:http://blog.csdn.net/justloveyou_/


一. 扫描控制台输入

  这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。在这个例子中,通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。

/** 
* 扫描控制台输入 
* 
*/ 
public class TestScanner { 
        public static void main(String[] args) { 
                Scanner s = new Scanner(System.in); 
                System.out.println("请输入字符串:"); 
                while (true) { 
                        String line = s.nextLine(); 
                        if (line.equals("exit")) break; 
                        System.out.println(">>>" + line); 
                } 
        } 
}/* Output(): 
        请输入字符串: 
        234 
        >>>234 
        wer 
        >>>wer 
        bye
        >>>bye 
 *///

二. Scanner的便捷性

  如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。我们可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以 逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做特定的处理。


三. Scanner分隔符

  Scanner 默认使用空格作为分隔符来分隔文本,但允许我们通过使用方法useDelimiter(String pattern)指定新的分隔符。特别需要注意的是,方法useDelimiter(String pattern)的参数是一个正则表达式字符串,若想指定多个分隔符来分割,须使用”|”将它们隔开。如下所示:

public static void test7() {
    Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf    ......asdfkl    las");
    s.useDelimiter(" |,|\\.");    // 将使用空格,逗号和点号来分割Scanner输入
    while (s.hasNext()) {
        System.out.println(s.next());
    }
}/* Output(): 
        123
        asdf
        sd
        45
        789
        sdf
        asdfl
        sdf
        sdfl
        asdf









        asdfkl



        las
 *///

四、Scanner常用API剖析和使用实例

  现列举Java中关于Scanner比较常用的几个API:

  • delimiter()
      返回此 Scanner 当前正在用于匹配分隔符的 Pattern。

  • hasNext()
      判断扫描器中当前扫描位置后是否还存在下一段,默认以一个或多个连续的空格作为段的分隔符。

  • hasNextLine()
      如果在此扫描器的输入中存在另一行(以回车作为”分行符”),则返回 true。

  • next()
      查找并返回来自此扫描器的下一个完整标记(取得输入段)。

  • nextLine()
      此扫描器执行当前行,并返回跳过的输入信息(取得输入行文本)。


Scanner使用实例 (主要针对笔试编程中的多行输入和单行输入):

1). hasNextLine() 和 nextLine() 的用法

public class TestScanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 正则表达式字符串
        //scanner.useDelimiter("\\*");

        System.out.println("请输入字符串:");

        // test1(scanner);
         test2(scanner);
        // test3(scanner);
    }


    /**
     * @description 以行(回车)读取,每在控制台输入三行则打印一次;不够三行,则阻塞等待
     * @author rico
     * @created 2017年4月5日 上午10:31:14
     * @param scanner
     */
    public static void test1(Scanner scanner) {
        while (true) {      // scanner 不断从控制台读取,若无内容,则阻塞等待

            // 以行读取
            String s1 = scanner.nextLine();
            String s2 = scanner.nextLine();
            String s3 = scanner.nextLine();

            System.out.println(">>>" + s1);
            System.out.println(">>>" + s2);
            System.out.println(">>>" + s3);
        }
    }


    /**
     * @description 以行(回车)读取,每在控制台输入三行则打印一次;不够三行,则阻塞等待(与方法test1等效)
     * @author rico
     * @created 2017年4月5日 上午10:31:14
     * @param scanner
     */
    public static void test2(Scanner scanner) {
        while (scanner.hasNextLine()) {        // 一旦控制台有输入,scanner就开始从控制台读取

            // 以行读取
            String s1 = scanner.nextLine();
            String s2 = scanner.nextLine();
            String s3 = scanner.nextLine();

            System.out.println(">>>" + s1);
            System.out.println(">>>" + s2);
            System.out.println(">>>" + s3);
        }
    }


    /**
     * @description 以行读取,每敲一次回车键读取一次,不会忽略空格
     * @author rico
     * @created 2017年4月5日 上午10:31:14
     * @param scanner
     */
    public static void test3(Scanner scanner) {
        while (scanner.hasNextLine()) {  // 一旦控制台有输入,scanner就开始从控制台读取
            String s1 = scanner.nextLine();
            System.out.println(">>>" + s1);
            System.out.println(">>>" + s1.length());
        }
    }

             Scanner1.png-14.7kB


2). hasNext() 和 next() 的用法

public class TestScanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 正则表达式字符串
        //scanner.useDelimiter("\\*");

        System.out.println("请输入字符串:");


        // test4(scanner);
        test5(scanner);
        //test6(scanner);
    }

    /**
     * @description 默认以一个或多个空格作为分割符来分隔行文本,每三个作为一组输出一次(不够三个则阻塞等待,直到够三个才作为一组进行输出);此外,连续输入三行(每行一个)也可以。
     * @author rico
     * @created 2017年4月5日 上午10:37:54
     * @param scanner
     */
    public static void test4(Scanner scanner) {
        while (true) {   // scanner 不断从控制台读取,若无内容,则阻塞等待
            String s1 = scanner.next();
            String s2 = scanner.next();
            String s3 = scanner.next();
            System.out.println(">>>" + s1);
            System.out.println(">>>" + s2);
            System.out.println(">>>" + s3);
        }
    }


    /**
     * @description 以一个或多个空格作为分割符来分隔行文本,每三个作为一组输出一次(不够三个则阻塞等待,直到够三个才作为一组进行输出);此外,连续输入三行(每行一个)也可以。
     * @author rico
     * @created 2017年4月5日 上午10:49:22
     * @param scanner
     */
    public static void test5(Scanner scanner) {
        while (scanner.hasNext()) {    // 一旦控制台有输入,scanner就开始从控制台读取
            String s

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java中的Scanner简述(企业笔试在线编程的输入控制)

相关文章

  • 2017-05-28使用eclipse快速新建spirngboot项目的方法
  • 2017-07-23MapReduce编程(七)倒排索引构建
  • 2017-05-28Java中Builder模式的实现详解
  • 2017-05-28spring boot启动加载数据原理分析
  • 2017-05-28利用Java Apache POI 生成Word文档示例代码
  • 2017-05-28java 使用ImageIO.writer从BufferedImage生成jpeg图像遇到问题总结及解决
  • 2017-05-28Hibernate映射之基本类映射和对象关系映射详解
  • 2017-05-28详解Spring中bean实例化的三种方式
  • 2017-05-28spring boot与redis 实现session共享教程
  • 2017-05-28Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器实例代码
    • Java解析Excel文件并把数据存入数据库
    • Spring Boot定时任务的使用实例代码
    • 浅谈Timer和TimerTask与线程的关系
    • Java中的浮点数分析
    • 浅谈spring中的default-lazy-init参数和lazy-init
    • java 算法二分查找和折半查找
    • SpringBoot(十)之邮件服务
    • Java System类详解_动力节点Java学院整理
    • SWT(JFace) Menu、Bar...体验代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有