Java中从控制台读取输入的最便捷方式是什么?含单字符、整数场景
Java控制台输入最便捷的处理方式
嘿,刚好在Java里处理控制台输入这块踩过不少坑,给你整理几个最实用的方式,分场景说清楚,绝对够便捷!
一、首选:Scanner类(新手友好,覆盖绝大多数场景)
Scanner是Java自带的工具类,上手贼简单,能直接处理不同类型的输入,不用自己手动转格式,简直是日常开发的首选。
1. 读取整数/浮点数
直接用nextInt()、nextDouble()这类方法就行,连类型转换都帮你搞定了,示例代码走一个:
import java.util.Scanner; public class InputDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数:"); int num = scanner.nextInt(); System.out.println("你输入的整数是:" + num); System.out.print("请输入一个小数:"); double decimal = scanner.nextDouble(); System.out.println("你输入的小数是:" + decimal); scanner.close(); // 用完记得关闭资源,好习惯要保持 } }
小提醒:如果输入的格式不对(比如输了字符串却用
nextInt()),会抛出InputMismatchException,可以加个try-catch处理异常,让程序更健壮。
2. 读取单个字符
Scanner本身没有直接读单个字符的方法,但有两个小技巧能搞定:
- 方法一:用
next().charAt(0)读取输入字符串的第一个字符,适合不需要读取空格的场景
System.out.print("请输入一个字符:"); char ch = scanner.next().charAt(0); System.out.println("你输入的字符是:" + ch);
- 方法二:用
findInLine(".").charAt(0),可以读取包括空格在内的单个字符(上面的方法会自动跳过空格)
System.out.print("请输入一个字符(包括空格):"); char ch = scanner.findInLine(".").charAt(0); System.out.println("你输入的字符是:'" + ch + "'");
3. 读取整行字符串
用nextLine()就行,但要注意一个坑:如果前面用了nextInt()、next()这类方法,一定要先调用scanner.nextLine()吃掉换行符,不然会直接读空行,踩过这个坑的人懂的都懂:
System.out.print("请输入整数:"); int num = scanner.nextInt(); scanner.nextLine(); // 必须吃掉这个换行符! System.out.print("请输入整行内容:"); String line = scanner.nextLine(); System.out.println("你输入的整行是:" + line);
二、高效之选:BufferedReader类(处理大量输入时更高效)
如果需要读取大量输入,BufferedReader的速度比Scanner快很多,不过需要自己手动处理类型转换,适合对性能有要求的场景。
1. 读取整行字符串
直接用readLine(),示例代码:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BufferedReaderDemo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入整行内容:"); String line = br.readLine(); System.out.println("你输入的内容是:" + line); br.close(); } }
2. 读取整数/单个字符
- 整数:把读取到的字符串用
Integer.parseInt()转换就行,同理浮点数用Double.parseDouble()
System.out.print("请输入整数:"); int num = Integer.parseInt(br.readLine()); System.out.println("你输入的整数是:" + num);
- 单个字符:用
read()方法,注意它返回的是ASCII码,需要强转成char,还要记得吃掉后面的换行符:
System.out.print("请输入一个字符:"); char ch = (char) br.read(); br.readLine(); // 吃掉换行符,避免影响后续输入 System.out.println("你输入的字符是:" + ch);
三、场景快速选择
- 日常小项目、新手开发:直接冲Scanner,简单省心,不用纠结类型转换
- 处理大量输入、追求性能:选BufferedReader,速度拉满
- 读取单个字符:Scanner的两个小技巧足够应付,或者用BufferedReader的
read()
内容的提问来源于stack exchange,提问作者Marjan100
相关产品推荐
相关产品推荐

