Java的控制台输入由System.in完成。
为了获得一个绑定到控制台的字符流,建议把System.in包装在BufferedReader对象中来创建一个字符流。
下面是创建BufferedReader的基本语法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedReader对象创建后,使用read()方法从控制台读取一个字符,或者用readLine()方法读取一个字符串。
read()方法从输入流读取一个字符并把该字符作为整数值返回。当流结束的时候返回-1。该方法抛出IOException。
代码实例:
import java.io.*; public class Main { // 在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样在调用方法时 // 就知道该方法有异常,且必须在程序中对异常进行处理,否则编译无法通过 // 流结束时抛出异常IOException,所以此处要这样写 public static void main(String[] args) throws IOException { char c; // 使用System.in创建BufferedReader // 输入字符串。按回车键结束 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("输入字符, 按q退出"); // 逐一读取字符串,如果读取到q则退出 do { c = (char) br.read(); System.out.println(c); } while(c != 'q'); } } ----------------------------------------------------------------- 输出结果如下: 输入字符, 按q退出 123qwe (输入的字符串,按回车键结束) 1 2 3 q (逐一读取字符串,到q退出,所以we读取不到)代码实例:
import java.io.*; public class Main { // 在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样在调用方法时 // 就知道该方法有异常,且必须在程序中对异常进行处理,否则编译无法通过 // 流结束时抛出异常IOException,所以此处要这样写 public static void main(String[] args) throws IOException { // 使用System.in创建BufferedReader // 输入字符串。按回车键结束 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("输入字符串,以qqq结束"); // 读取字符串,如果是qqq则结束 do { str = br.readLine(); System.out.println(str); } while(!str.equals("qqq")); } } ----------------------------------------------------------------- 输出结果如下: 输入字符串,以qqq结束 we are family qqq shabi (输入的字符串,里面有qqq,但不会退出) we are family qqq shabi (读取的字符串) qqq (输入的字符串,只有qqq,符合条件则退出) qqq (读取的字符串)也通过Scanner类来获取用户的输入。下面是创建Scanner对象的基本语法:
Scanner s = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext与hasNextLine判断是否还有输入的数据。
代码实例:
import java.util.Scanner; public class Main { public static void main(String[] args) { // 创建Scanner对象,从键盘接收数据,按回车键结束 Scanner scan = new Scanner(System.in); System.out.println("next方法接收:"); // 判断是否还有输入,如果遇到空格就退出 if(scan.hasNext()){ String str1 = scan.next(); System.out.println("输入的数据为:"+str1); } } } ----------------------------------------------------------------- 输出结果如下: next方法接收: we are family (我们输入的字符串) 输入的数据为:we (遇到空格就退出,所以只接收到了we)代码实例:
import java.util.Scanner; public class Main { public static void main(String[] args) { // 创建Scanner对象,从键盘接收数据,按回车键结束 Scanner scan = new Scanner(System.in); System.out.println("nextLine方法接收:"); // 判断是否还有输入,读取所有字符串 if(scan.hasNextLine()){ String str2 = scan.nextLine(); System.out.println("输入的数据为:"+str2); } } } ----------------------------------------------------------------- 输出结果如下: nextLine方法接收: we are family (我们输入的字符串) 输入的数据为:we are family (接收所有字符)next():
1、一定要读取到有效字符后才可以结束输入。 2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 4、next()不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。 2、可以获得空白。
随 亦 认证博客专家 安全博客专家 甲方安全部负责人,坐标杭州,欢迎猎挖。擅长安全架构、web渗透、移动安全、代码审计、隐私合规、安全开发、安全运营