Java 小例子:读取控制台的用户输入
2012-05-29 16:15
483 查看
想当年学 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 方法改造后的例子:
4000
/**
* 读取用户输入
*
* @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("^[0-9_]+$");
}
str.matches("^[0-9_]+$") 用来判断字符串是不是全是数字。
到这里纵观整个代码,可以看得出来,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 方法改造后的例子:
4000
/**
* 读取用户输入
*
* @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("^[0-9_]+$");
}
str.matches("^[0-9_]+$") 用来判断字符串是不是全是数字。
到这里纵观整个代码,可以看得出来,Java 虽然在某些地方复杂,但只要稍加整理,我们仍然可以得到逻辑结构合理的代码。
相关文章推荐
- Java 小例子:读取控制台的用户输入
- Java 小例子:读取控制台的用户输入
- java小例子:读取控制台用户输入数据
- Java中读取控制台的用户输入
- 详细整理Java 从命令控制台输入数据读取输入流System.in的几种常用方法
- java控制台程序-读取输入的字符串,其中文字符变成乱码问题
- JAVA读取控制台的输入【转】
- java1:从控制台读取输入
- [Java 12 IO] BufferedReader 等待读取用户输入内容: bufferedReader.readLine();
- [Java 12 IO] BufferedReader 等待读取用户输入内容: bufferedReader.readLine();
- Java笔记(1):从控制台读取输入
- 在控制台读取用户输入密码,你会么?
- JAVA读取控制台的输入【转】
- Java控制台用户输入总结
- JAVA读取控制台的输入【转】
- Java控制台读取输入
- java网络编程精解demo1---读取用户控制台的输入的数据并显示
- Java Scanner类从控制台读取输入
- Java 读取控制台输入
- java实例之接收用户控制台输入