一、Scanner
- 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
- Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。
- 然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
- 扫描操作可能被阻塞,而等待信息的输入。
- jdk1.5开始的
public final class Scanner implements Iterator<String> { //构造一个新的 Scanner,它生成的值是从指定文件扫描的。来自该文件的字节通过底层平台的默认字符集转换成字符 public Scanner(File source) throws FileNotFoundException{} //构造一个新的 Scanner,它生成的值是从指定文件扫描的。来自该文件的字节通过指定字符集转换成字符。 public Scanner(File source, String charsetName) throws FileNotFoundException{} //构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。取自该流的字节通过底层平台的默认字符集转换成字符 public Scanner(InputStream source){} //构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。来自该流的字节通过指定字符集转换成字符。 public Scanner(InputStream source, String charsetName){} //构造一个新的 Scanner,它生成的值是从指定字符串扫描的 public Scanner(String source){} //关闭此扫描器。 public void close(){} //返回此 Scanner 当前正在用于匹配分隔符的 Pattern public Pattern delimiter(){} //试图在忽略分隔符的情况下查找下一个指定模式。 public String findInLine(Pattern pattern){} //试图在忽略分隔符的情况下查找下一个从指定字符串构造的模式 public String findInLine(String pattern){} //如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。 public boolean hasNext(){} //如果下一个完整标记与指定模式匹配,则返回 true。完整标记以与分隔模式匹配的输入信息为前后缀。在等待输入信息时,此方法可能阻塞。扫描器不执行任何输入。 public boolean hasNext(Pattern pattern){} public boolean hasNext(String pattern){} //查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息 public String next(){} //如果下一个标记与指定模式匹配,则返回下一个标记。 public String next(Pattern pattern){} public String next(String pattern){} //将输入信息的下一个标记扫描为一个 int。 public int nextInt(){} public int nextInt(int radix){} nextShort()也可以指定基数 //返回此扫描器的默认基数 public int radix(){} //在忽略分隔符的情况下跳过与指定模式匹配的输入信息。 public Scanner skip(Pattern pattern){} public Scanner skip(String pattern){} //将此扫描器的分隔模式设置为指定模式 public Scanner useDelimiter(Pattern pattern){} public Scanner useDelimiter(String pattern){} //将此扫描器的默认基数设置为指定基数。 public Scanner useRadix(int radix){} }
二、示例
import java.util.*; class ScannerDemo { public static void main(String[] args) { System.out.println("请输入若干个数,每输入一个数用回车确认"); System.out.println("最后输入一个非数字结束输入操作"); Scanner scan = new Scanner(System.in); double sum = 0; int m = 0; while(scan.hasNextDouble()) { double x = scan.nextDouble(); m = m + 1; sum = sum + x; } System.out.println(m+"个数的和为"+sum); System.out.println(m+"个数的平均值是"+(sum/m)); } }
import java.util.*; import java.io.*; /** *读取并分析文本文件:hrinfo.txt, *文本文件的内容如下:老赵,28,feb-01,true小竹,22,dec-03,false阿波,21,dec-03,false凯子,25,dec-03,true */ class ScannerDemo { public static void main(String[] args) throws Exception { readFile("f:\\hrinfo.txt"); } private static void readFile(String fileName)throws Exception { Scanner scan = new Scanner(new File(fileName)); scan.useDelimiter(System.getProperty("line.separator")); while(scan.hasNext()) { parseLine(scan.next()); } scan.close(); } private static void parseLine(String line) { Scanner scan = new Scanner(line); scan.useDelimiter(","); String name = scan.next(); int age = scan.nextInt(); String date = scan.next(); boolean b = scan.nextBoolean(); System.out.println("姓名:"+name+" 年龄:"+age+" 入司时间:"+date+" 验证标记:"+b); } }
import java.util.*; class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner("zhangsan..20..lisi...15......wangwu.18...ermazi.19.haha..20"); scan.useDelimiter("\\.+"); while(scan.hasNext()) { System.out.println(scan.next()); System.out.println(scan.nextInt()); } } }
import java.util.*; class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("请输入姓名:"); String name = scan.next(); System.out.println("请输入语文数学英语成绩,用空格隔开:"); double yuWen = scan.nextDouble(); double shuXue = scan.nextDouble(); double yingYu = scan.nextDouble(); System.out.println("姓名:"+name+" 语文:"+yuWen+" 数学:"+shuXue+" 英语:"+yingYu+" 总分:"+(yuWen+shuXue+yingYu)); } }
import java.util.*; class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(true) { String line = scan.nextLine(); if(line.equals("over")) break; System.out.println(">>>"+line); } } }
import java.util.*; class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(true) { String line = scan.next(); if(line.equals("over")) break; System.out.println(">>>"+line); } } }
import java.util.*; class ScannerDemo { public static void main(String[] args) throws Exception { Scanner scan = new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las"); scan.useDelimiter(" +|,|\\.+"); while(scan.hasNext()) { System.out.println(scan.next()); } } }
相关推荐
在Java编程语言中,`java.util.InputMismatchException`是一个常见的运行时异常,它通常发生在尝试从数据源(如控制台、文件或数据库)读取数据时,遇到的数据类型与预期的不匹配。在这个特定的场景中,问题出在主线...
import java.util.Scanner; public class Test3 { public static void main(String[] args) { System.out.println("请您输入要打印的金字塔的行数: "); Scanner sca=new Scanner(System.in); int nu=sca....
` 是一个非常基础且重要的语句,它引入了`java.util.Scanner`类。这个类是Java标准库的一部分,主要用于从各种输入源读取数据,如键盘、文件、系统环境变量等。在这个场景中,我们看到的`main.java`文件很可能包含了...
`java.util.Scanner` 类是 Java 标准库中的一个实用工具类,它提供了一种方便的方式来读取基本类型的原始数据和字符串。`Scanner` 类可以读取从控制台输入的数据、文件中的数据,甚至是从字符串中的数据。 #### 二...
`这个语句,它表明我们要使用`Scanner`类,这个类是Java标准库(`java.util`包)的一部分,主要用于从各种输入源读取数据,比如键盘输入、文件或其他流。 `Scanner`类提供了多种方法来获取不同类型的数据,如整数、...
Scanner 是 Java 提供的一个类工具,用于从控制台读取用户的输入。使用 Scanner 前需要导入包,语句为 `import java.util.Scanner;`。创建 Scanner 对象时需要指定输入源,通常使用 `System.in` 作为输入源,例如 `...
8. `java.util.Scanner`: - 用于从输入源(如键盘、文件)读取数据,常用于命令行应用程序。 9. `java.util.UUID`: - 生成全局唯一的标识符(UUID),常用于创建唯一的记录标识。 10. `java.util.regex` 包: ...
9. **`java.util.Scanner`**:方便从标准输入(键盘)、文件、系统属性等读取数据。 10. **`java.util.Collections`与`java.util.Comparator`**:Collections类提供了对集合的静态方法,如排序、反转、填充等;...
16. **`java.util.Scanner`**: 从各种输入源读取基本类型和字符串。 17. **`java.util.Properties`**: 用于存储配置信息,如XML或Properties文件。 18. **`java.util.Random`**: 生成随机数。 19. **`java.util....
15. **`java.util.Scanner`**:从系统输入读取数据,如键盘输入,适合用户交互。 16. **`java.util.Calendar`**:日历类,提供了更复杂的日期和时间操作。 17. **`java.text.SimpleDateFormat`**:格式化和解析...
在Java编程语言中,`java.util.Scanner` 类是用于输入处理的一个重要工具。它提供了一种方便的方法来读取各种数据类型,如整数、浮点数、字符串等,从不同源,包括标准输入(键盘)、文件和系统属性。本教程将深入...
19. **`java.util.Scanner`**:从标准输入、文件或其他输入流读取简单类型的数据。 20. **`java.util.regex`** 包:正则表达式处理,用于字符串的匹配和替换。 21. **`java.util.Comparator`**:用于自定义排序...
标题所提到的问题是关于Java编程中使用`Scanner`类时遇到的一个常见陷阱,即`NoSuchElementException`异常。这个异常通常发生在尝试从一个已经关闭或者无法提供输入的`Scanner`对象中读取数据时。下面我们将详细探讨...
7. **`java.util.Scanner`**: 用于从标准输入(如键盘)读取用户输入的数据,支持多种数据类型。 8. **`java.util.concurrent` 包**: 提供了线程安全的数据结构和并发工具,如`ExecutorService`、`Semaphore`、...
import java.util.Scanner; /** * 使用递归分割绘制迷宫 * * @author WangSong * * @Time 2020-6-22 */ abstract class Arithmetic { /** 路表示为1 */ public final int ROUND = 1; /** 墙表示为0 */ ...