在写 Java 程序过程中,尤其是在做面试题的过程中,需要用到 java 的 io 模块。今天算是总结一下 java 在 接受键盘输入输出这一块。
1) System.in.read() 接受一个字符
System.in.read() 只能接受一个 java 字符,并且是 char 类型,不适合大量的输入输入。当我们需要的数据是其他类型时,还需要自己去手动转换。
import java.io.*;
public class scan {
public static void main(String[] args) throws IOException {
char ch = (char) System.in.read();
//此处输出是字符
System.out.println(ch);
}
}
2) BufferedReader 接受一个字符串
采用 BufferedReader 只能接受一个字符串,如果需要是整数类型,需要自己手动转换。最近在做多益网络的笔试题时,就必须要采用这种方式输入,不能使用 Scanner 方式输入,很坑!
import java.io.*;
public class scan {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("please enter a value:");
str = br.readLine();
System.out.println("value is: " + str);
String str2 = br.readLine();
System.out.println("value is: " + str2);
//此处输入的虽然是字符,但是打印的是ASCLL 码,需要注意
int value = br.read();
System.out.println("value is :" + value);
}
}
BufferedReader 接受一行数据并转换为数组
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String str = null;
str = bufferedReader.readLine();
//用正则表达式将输入转换为数组
String[] nums = str.split(" ");
System.out.println(nums.length);
}
3) Scanner 方式输入
Scanner 类是 java.util 下的类,是应用较为广泛的输入输入类,对于字符串、整形、浮点型,只要稍作改变扁可以直接接受。
import java.io.*;
import java.util.Scanner;
public class scan {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
//接受一行数据
System.out.println(scanner.nextLine());
//接受一个整数
System.out.println(scanner.nextInt());
//接受一个浮点数
System.out.println(scanner.nextDouble());
}
}
}
其中,nextLine()可以接收空格或者tab键,其输入应该以enter键结束。但是 nextInt nextDouble 等是不接受空格键的,会一直等待有效数据的输入