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);
}
}
}
* 扫描控制台输入
*
* @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
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());
}
}
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
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
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()
此扫描器执行当前行,并返回跳过的输入信息。
返回此 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());
}
}
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
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 应用详解 #### 一、概述 `java.util.Scanner` 类是 Java 标准库中的一个实用工具类,它提供了一种方便的方式来读取基本类型的原始数据和字符串。`Scanner` 类可以读取从控制台输入的数据、...
### Java.util包源码知识点概览 #### 一、Overview `java.util`包是Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口来处理集合数据类型、日期时间操作、随机数生成等功能。这份PDF文档包含了`java....
### Java中的Scanner类详解 #### 一、简介 在Java编程语言中,为了实现与用户的交互,即获取用户的输入,通常会用到`java.util.Scanner`类。该类提供了多种方法来读取不同数据类型的输入,例如整数、浮点数、字符...
### Java 输入语句 `Scanner` 用法详解 #### 一、引言 在 Java 编程语言中,实现从用户那里获取输入是一项常见的需求。无论是命令行应用程序还是图形界面应用,都需要能够处理用户交互。Java 提供了多种方式来处理...
本文将详细介绍Java语言中的三种数据输入方法,分别是使用main方法命令行参数、使用java.util.Scanner类和使用java.io.BufferedReader类。 1. 使用main方法命令行参数 在Java语言中,main方法的原型是`public ...
### Java Scanner 类的使用详解 #### 一、简介与应用场景 `java.util.Scanner` 是 Java SDK 1.5 版本引入的一个类,用于简化文本扫描任务,它能够解析基本类型(如 `int`, `double`)以及字符串类型的数据。在进行...
### Java语法:Scanner类用法详解 #### 一、引言 在Java编程语言中,`Scanner`类是处理输入的核心工具之一。它提供了一系列的方法来读取不同类型的输入数据,如整数、浮点数、字符串等。本文将详细介绍如何使用`...
"Java小游戏源代码详解" Java小游戏源代码分析 在这个Java小游戏源代码中,我们可以看到两个Java文件:`GameA_B.java`和`GameProcess.java`。我们将对这两个文件进行详细的分析,以了解Java小游戏的实现机制。 ...
`Scanner`类位于`java.util`包下,它主要用于读取文本输入。可以通过不同的构造方法创建`Scanner`对象: - `Scanner(InputStream source)`:此构造方法接收一个`InputStream`类型的参数,通常用于读取标准输入`...
### Java中Scanner类的用法详解 #### 一、引言 `Scanner`类作为Java标准库中的一个重要组成部分,自JDK 1.5版本引入以来,在读取控制台输入及文件内容方面提供了极大的便利性。它融合了之前`StringTokenizer`与`...
### Java 输入语句 `Scanner` 使用详解 #### 一、`Scanner` 类简介 在 Java 编程语言中,`Scanner` 类是一个非常实用且重要的类,它位于 `java.util` 匢中。该类的主要功能是用于从各种输入源(如键盘、文件或字符...
### 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编程中,输入处理是一项非常重要的技能,尤其是在控制台应用程序开发中。与C语言相比,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) { ...
2. **java.util**: 提供了数据结构(如列表、集合、映射)和日期/时间功能,还有实用工具类如`Random`和`Scanner`。 3. **java.io**: 处理输入/输出操作,如文件读写、流处理。 4. **java.nio**: 非阻塞I/O库,...
在Java中,进行基本的输入输出操作主要依赖于`java.util.Scanner`类。此类可以读取用户输入的标准输入、文件中的数据等,并自动根据所用类型进行转换。 **示例1:** ```java import java.util.Scanner; public ...
通过导入适当的类,开发者可以轻松地利用Java的强大功能,例如`java.util.Scanner`用于从控制台读取用户输入,`java.util.Date`处理日期和时间,`java.awt`和`javax.swing`包提供了图形界面组件等。掌握API文档的...
### Java 输入方法详解 #### 一、`Scanner` 类的使用 `Scanner` 类是 Java 5 引入的新特性,用于简化基本数据类型的输入处理。`Scanner` 类提供了多种方法来读取不同数据类型的数据,例如整数、浮点数、字符串等。...
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...