Java学习笔记2——命令行模式下与程序互动
2012-04-14 01:25
423 查看
学习一门编程语言,在开始时最好的方式之一是利用文本编辑器进行代码的编写,这有助于短期内迅速掌握该门语言的基本语法结构。本文意在介绍通过文本编辑时,如何实现与程序的交互的入门知识总结。
一、使用Scanner类进行输入交互(1.5及其以上版本)
位于包java.util中,该类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
二、使用BufferedReader取得输入Scanner取得输入的依据是空格符,有时在需要输入一个含空格的字符串时就不适用,此时就不能输出完成的字符串,要想取得包含空格串的输入,比较简单的方法是适用java.io.BufferedReader类取得输入。在未有Scanner类之前,这个方法是用来取得用户输入的方式。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
构造方法摘要
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
这里要特别提出的方法是readLine()方法,使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常。
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 抛出:
标准输入输出串这里就不在介绍,平时我们用的System.out/in就是。[/code]
一、使用Scanner类进行输入交互(1.5及其以上版本)
位于包java.util中,该类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
public final class Scannerextends Objectimplements Iterator<String>Scanner使用分隔符模式将输入分解为标记,默认情况下该分隔符模式与空白匹配,包括空格键、Tap键和回车键,即默认情况下以空白作为标记结束位置,然后可以使用不同的next方法将得到的标记转换为不同类型的值。扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子: [code] String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close();输出为:
1 2 red blue以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input); s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"); MatchResult result = s.match(); for (int i=1; i<=result.groupCount(); i++) System.out.println(result.group(i)); s.close();当输入不匹配时,则会抛出java.util.InputDisMatchException异常。注意其API中相关的方法的含义。
二、使用BufferedReader取得输入Scanner取得输入的依据是空格符,有时在需要输入一个含空格的字符串时就不适用,此时就不能输出完成的字符串,要想取得包含空格串的输入,比较简单的方法是适用java.io.BufferedReader类取得输入。在未有Scanner类之前,这个方法是用来取得用户输入的方式。
public class BufferedReaderextends Reader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。 通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。
构造方法摘要
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
这里要特别提出的方法是readLine()方法,使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常。
public String readLine() throws IOException读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 抛出:
IOException- 如果发生 I/O 错误
标准输入输出串这里就不在介绍,平时我们用的System.out/in就是。[/code]
相关文章推荐
- maven学习笔记:命令行模式创建java_spark项目并运行示例程序
- java--在命令行模式下与程序互动
- maven学习笔记:命令行模式创建scala_spark项目并运行程序
- 学习Java 23种设计模式详解笔记之行为型模式(三)
- 设计模式学习笔记(Java篇)之单例模式
- java入门程序100例学习笔记(001金字塔)
- JAVA学习笔记之三Applet程序
- Java学习笔记之抽象(abstract)与模板方法设计模式
- java学习笔记-设计模式2(单例模式)
- JAVA并发设计模式学习笔记(一)—— JAVA多线程编程
- Java学习笔记----工厂模式和反射
- Java学习笔记之工厂模式
- JAVA程序性能优化-让你的java程序更快、更稳定学习笔记一性能优化一般步骤
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<servlet_文件下载>(二十七)
- java学习笔记-设计模式23(中介者模式)
- Java学习笔记---设计模式工厂方法模式
- java 设计模式学习笔记二 工厂模式Factory
- Java学习笔记(二十二):打包程序
- java 设计模式 学习笔记(1) - 简单工厂模式
- day12_JavaWeb设计模式与案例学习笔记