Java 控制台 IO
来源:互联网 发布:关于人工智能的股票 编辑:程序博客网 时间:2024/06/05 09:04
记住一点 输入流输出流中的“输入” 和“输出” 都是相对于JVM内存来说的。
以下转自http://blog.csdn.net/yidinghe/article/details/3616260 觉得写的比较清晰
想当年学 BASIC 的时候,获取用户输入多简单,就一个 input;后来学 C,也挺简单,一个 scanf();后来学 c++,同样简单,一个 cin <<;到了 Java 这里,麻烦来了。
1、简单的获取用户输入
下面是一个基本的例子,包含解释
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class BasicInput { public static void main(String[] args) { try { // 在 Java 当中,用户输入要通过 InputStream (输入流)来获取。 // System.in 就是系统的输入流。缺省情况下这个输入流连接到控制台(命令行)。 // InputStreamReader 就是用来读取 InputStream 的类。 InputStreamReader is_reader = new InputStreamReader(System.in); // 通常使用 BufferedReader 来读取 InputStream 中的字符串内容。 // BufferedReader 可以一次读取一行。 String str = new BufferedReader(is_reader).readLine(); // 将读取的字符串输出到屏幕上。 System.out.println("您输入的是:" + str); } catch (IOException e) { e.printStackTrace(); } } }
看起来不少,实际上只有三行。下面将前面两行提取出来,放到单独的方法中,就成了下面这个样子(前面的 import 我就省掉了):
public class BasicInput { public static void main(String[] args) { try { String str = readUserInput(); System.out.println("您输入的是:" + str); } catch (IOException e) { e.printStackTrace(); } } /** * 读取用户输入 * * @return 用户输入 * @throws IOException 如果读取失败 */ private static String readUserInput() throws IOException { InputStreamReader is_reader = new InputStreamReader(System.in); return new BufferedReader(is_reader).readLine(); } }
2、在读取之前显示提示文本
有时候需要在读取前显示一段文字。下面是继续改造后的例子:
public class BasicInput { public static void main(String[] args) { try { // 先提示一段文字,然后等待用户输入 String str = readUserInput("请输入您的年龄:"); System.out.println("您输入的是:" + str); } catch (IOException e) { e.printStackTrace(); } } /** * 读取用户输入 * * @param prompt 提示文字 * @return 用户输入 * @throws IOException 如果读取失败 */ private static String readUserInput(String prompt) throws IOException { // 输出提示文字 System.out.print(prompt); InputStreamReader is_reader = new InputStreamReader(System.in); return new BufferedReader(is_reader).readLine(); } }
3、不允许用户输入为空
这就要用到 while 循环,当用户输入为空(没有输入就直接回车)的时候重新要求输入。下面是将 readUserInput 方法改造后的例子:
/** * 读取用户输入 * * @param prompt 提示文字 * @return 用户输入 * @throws IOException 如果读取失败 */ private static String readUserInput(String prompt) throws IOException { // 先定义接受用户输入的变量 String result; do { // 输出提示文字 System.out.print(prompt); InputStreamReader is_reader = new InputStreamReader(System.in); result = new BufferedReader(is_reader).readLine(); } while (result.equals("")); // 当用户输入为空的时候,反复提示要求用户输入 return result; }为了更加灵活的判断,我们将 while 中的判断语句提取成一个单独的方法。然后整个代码变成这样:
public class BasicInput { public static void main(String[] args) { try { // 先提示一段文字,然后等待用户输入 String str = readUserInput("请输入您的年龄:"); System.out.println("您输入的是:" + str); } catch (IOException e) { e.printStackTrace(); } } /** * 读取用户输入 * * @param prompt 提示文字 * @return 用户输入 * @throws IOException 如果读取失败 */ private static String readUserInput(String prompt) throws IOException { // 先定义接受用户输入的变量 String result; do { // 输出提示文字 System.out.print(prompt); InputStreamReader is_reader = new InputStreamReader(System.in); result = new BufferedReader(is_reader).readLine(); } while (isInvalid(result)); // 当用户输入无效的时候,反复提示要求用户输入 return result; } /** * 检查用户输入的内容是否无效 * * @param str 用户输入的内容 * @return 如果用户输入的内容无效,则返回 true */ private static boolean isInvalid(String str) { return str.equals(""); } }
4、只允许用户输入数字
本例要求的是输入用户年龄。这是一个整数。为了避免得到非法的值,我们需要进一步对内容进行判断。因为之前我们将内容判断这一步单独提取出来,所以我们只要修改isInvalid 方法就行了。判断一个字符串是不是数字,用正则表达式是最简单的。下面是修改后的 isInvalid 方法:
private static boolean isInvalid(String str) { return str.equals("") || !str.matches("//d+"); }
- Java 控制台 IO
- java IO 读取控制台输入
- 控制台IO
- 使用java.io.console来与控制台设备进行交互
- java IO总结之字节流操作控制台输入输出
- java IO总结之字符流操作控制台输入输出(高效)
- java控制台电话本 用io流和序列化实现
- JAVA基础_Java IO流 控制台到记事本、记事本到控制台及详解
- 控制台IO操作函数
- JAVA控制台
- java IO总结之字节流操作控制台输入输出(高效)
- Java IO 之 FileReader 读取文件打印在控制台(处理汉字乱码bug)
- (转载) Java IO 之 FileReader 读取文件打印在控制台(处理汉字乱码bug)
- 在 java控制台实现 类似java Copy srcpath despath这种DOS命令行的文件拷贝功能 文件IO StringBuffer
- IO流之键盘录入与控制台
- 通过java的io流将本地文件读取到控制台,并将文件内容再次写入另一个文件中
- java基础之IO流中实现对键盘和控制台的输入和输出以及写到文本文件
- 在was控制台重启工程时,zookeeper报以下错误:java.io.IOException:Connection reset by peer
- MyEclipse 7.0 + PHPEclipse下调试环境搭建(xDebug)
- 数理逻辑:谓词演算(8)演绎定理
- linux边学边记---判断语句if、case、while、for
- 《HP大中华区总裁孙振耀退休感言》
- 程序员这口饭-职业规划解决方案
- Java 控制台 IO
- android 开发环境搭建
- HttpURLConnection学习
- 决战第三屏:移动互联网时代的商业与营销新规则
- 当心劫持搜索引擎的色情网页
- 图片
- 黑马程序员——直接在主函数中,建立匿名内部子类线程对象
- ADB常用命令的说明与示例
- 数理逻辑:谓词演算(9)进一步的形式定理