`

详解java.util.Scanner

 
阅读更多
java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地。
一、扫描控制台输入
 
这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。
当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。
 
/** 
* 扫描控制台输入 
* 
* @author leizhimin 2009-7-24 11:24:47 
*/
 
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); 
                } 
        } 
}
 
请输入字符串: 
234 
>>>234 
wer 
>>>wer 
bye 
>>>bye 
exit 

Process finished with exit code 0
 
先写这里吧,有空再继续完善。
 
二、如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。
 
可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。
 
三、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符
 
使用默认的空格分隔符:
        public static void main(String[] args) throws FileNotFoundException { 
                Scanner s = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf    ......asdfkl    las"); 
//                s.useDelimiter(" |,|\\."); 
                while (s.hasNext()) { 
                        System.out.println(s.next()); 
                } 
        }
 
123 
asdf 
sd 
45 
789 
sdf 
asdfl,sdf.sdfl,asdf 
......asdfkl 
las 

Process finished with exit code 0
 
将注释行去掉,使用空格或逗号或点号作为分隔符,输出结果如下:
123 
asdf 
sd 
45 
789 
sdf 
asdfl 
sdf 
sdfl 
asdf 







asdfkl 

las 

Process finished with exit code 0
四、一大堆API函数,实用的没几个
 
(很多API,注释很让人迷惑,几乎毫无用处,这个类就这样被糟蹋了,启了很不错的名字,实际上做的全是龌龊事)
下面这几个相对实用:
delimiter() 
          返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext() 
          判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine() 
          如果在此扫描器的输入中存在另一行,则返回 true。
next() 
          查找并返回来自此扫描器的下一个完整标记。
nextLine() 
          此扫描器执行当前行,并返回跳过的输入信息。
 
五、逐行扫描文件,并逐行输出
 
看不到价值的扫描过程
        public static void main(String[] args) throws FileNotFoundException { 
                InputStream in = new FileInputStream(new File("C:\\AutoSubmit.java")); 
                Scanner s = new Scanner(in); 
                while(s.hasNextLine()){ 
                        System.out.println(s.nextLine()); 
                } 
        }
 
package own; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.ProtocolException; 
import java.net.URL; 

import com.verisign.uuid.UUID; 

/** 
* ��һ������թƭ��վ�Զ��ύ������Ϣ�ij����ÿտ�������һ�¡� 
* @author wangpeng 
* 
*/ 
public class AutoSubmit { 

  /** 
    * @param args 
    * @throws Exception    
    */ 
  public static void main(String[] args) throws Exception { 

...在此省略N行 

Process finished with exit code 0
 
Java对字符串支持还是比较弱的,尽管Java一直在努力。
Java的确老势已经下来了,越来越庞大臃肿,往昔的辉煌正成为Java前进路上的绊脚石,为了向后兼容,为了平稳的过度,不得不做很多痛苦的选择。
如果Java能直接出Java III,完全抛弃现有的糟粕,全新设计语法和风格。Java也许会继续辉煌下去。
 
关于Scanner的nextInt(),next(),nextLine()方法总结查看以下(主要是示例)
 
 
分享到:
评论

相关推荐

    java.util.Scanner应用详解_.docx

    ### Java.util.Scanner 应用详解 #### 一、概述 `java.util.Scanner` 类是 Java 标准库中的一个实用工具类,它提供了一种方便的方式来读取基本类型的原始数据和字符串。`Scanner` 类可以读取从控制台输入的数据、...

    java输入语句scanner.docx

    ### Java中的Scanner类详解 #### 一、简介 在Java编程语言中,为了实现与用户的交互,即获取用户的输入,通常会用到`java.util.Scanner`类。该类提供了多种方法来读取不同数据类型的输入,例如整数、浮点数、字符...

    java输入语句scanner用法讲解.pdf

    ### Java 输入语句 `Scanner` 用法详解 #### 一、引言 在 Java 编程语言中,实现从用户那里获取输入是一项常见的需求。无论是命令行应用程序还是图形界面应用,都需要能够处理用户交互。Java 提供了多种方式来处理...

    浅谈Java语言的输入数据的方法.pdf

    本文将详细介绍Java语言中的三种数据输入方法,分别是使用main方法命令行参数、使用java.util.Scanner类和使用java.io.BufferedReader类。 1. 使用main方法命令行参数 在Java语言中,main方法的原型是`public ...

    java Scanner 的用法

    ### Java Scanner 类的使用详解 #### 一、简介与应用场景 `java.util.Scanner` 是 Java SDK 1.5 版本引入的一个类,用于简化文本扫描任务,它能够解析基本类型(如 `int`, `double`)以及字符串类型的数据。在进行...

    Java语法:Scanner用法

    ### Java语法:Scanner类用法详解 #### 一、引言 在Java编程语言中,`Scanner`类是处理输入的核心工具之一。它提供了一系列的方法来读取不同类型的输入数据,如整数、浮点数、字符串等。本文将详细介绍如何使用`...

    java小游戏源代码.doc

    "Java小游戏源代码详解" Java小游戏源代码分析 在这个Java小游戏源代码中,我们可以看到两个Java文件:`GameA_B.java`和`GameProcess.java`。我们将对这两个文件进行详细的分析,以了解Java小游戏的实现机制。 ...

    Java中Scanner用法.doc

    `Scanner`类位于`java.util`包下,它主要用于读取文本输入。可以通过不同的构造方法创建`Scanner`对象: - `Scanner(InputStream source)`:此构造方法接收一个`InputStream`类型的参数,通常用于读取标准输入`...

    Java中Scanner类的用法.doc

    ### Java中Scanner类的用法详解 #### 一、引言 `Scanner`类作为Java标准库中的一个重要组成部分,自JDK 1.5版本引入以来,在读取控制台输入及文件内容方面提供了极大的便利性。它融合了之前`StringTokenizer`与`...

    java输入语句scanner 使用方式

    ### Java 输入语句 `Scanner` 使用详解 #### 一、`Scanner` 类简介 在 Java 编程语言中,`Scanner` 类是一个非常实用且重要的类,它位于 `java.util` 匢中。该类的主要功能是用于从各种输入源(如键盘、文件或字符...

    java输入数据方法

    ### Java输入数据方法详解 #### 一、引言 在Java编程中,数据输入是非常重要的一个环节。良好的数据输入不仅可以增强程序的交互性,还能提高程序的灵活性与实用性。Java提供了多种方法来实现数据的输入,不同的...

    java 基础知识

    import java.util.Scanner; // 输入 package aa; import java.util.Scanner; // 输入 public class qq { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out....

    java输入语法

    ### Java 输入语法详解 #### 一、前言 在Java编程中,输入处理是一项非常重要的技能,尤其是在控制台应用程序开发中。与C语言相比,Java的输入方式更加复杂且功能强大,这使得初学者可能会感到有些困惑。本文将...

    java强化练习

    String word = scanner.next(); if (word.isEmpty()) break; words.add(word); } // 忽略大小写排序 Collections.sort(words, new Comparator() { @Override public int compare(String o1, String o2) { ...

    参考文档-jdk接口文档.7z

    2. **java.util**: 提供了数据结构(如列表、集合、映射)和日期/时间功能,还有实用工具类如`Random`和`Scanner`。 3. **java.io**: 处理输入/输出操作,如文件读写、流处理。 4. **java.nio**: 非阻塞I/O库,...

    java整理的代码

    在Java中,进行基本的输入输出操作主要依赖于`java.util.Scanner`类。此类可以读取用户输入的标准输入、文件中的数据等,并自动根据所用类型进行转换。 **示例1:** ```java import java.util.Scanner; public ...

    详解Java类库的概念以及import的使用方法

    通过导入适当的类,开发者可以轻松地利用Java的强大功能,例如`java.util.Scanner`用于从控制台读取用户输入,`java.util.Date`处理日期和时间,`java.awt`和`javax.swing`包提供了图形界面组件等。掌握API文档的...

    java输入的两个方法.docx

    ### Java 输入方法详解 #### 一、`Scanner` 类的使用 `Scanner` 类是 Java 5 引入的新特性,用于简化基本数据类型的输入处理。`Scanner` 类提供了多种方法来读取不同数据类型的数据,例如整数、浮点数、字符串等。...

    java 实现凯撒密码(csdn)————程序.pdf

    import java.util.Scanner; public class Demo { public static void main(String[] args) { System.out.println("请输入密文:"); Scanner input = new Scanner(System.in); String str = input.next(); byte...

Global site tag (gtag.js) - Google Analytics