A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

前几天看到关于取得用户的输入的问题,先整理两种方式如下:
通常,在Java开发过程中,经常需要从控制台输入数据并读取到程序中,这时,我们可以使用标准输入串对象System.in.但是,它有一个缺点,就是System.in提供的 read方法每次只能读取一个字节的数据,而我们平时所应用的通常是读取一个字符串或者是一个数字,所以read方法所以提供的功能读取效率太低,为此我们常使用功能更强的Scanner类和BufferedReader类来取得用户的输入.


Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
Scanner类中提供的多个不同的 next 方法:
        next():取得一个字符串;
        nextInt():将取得的字符串转换成int类型的整数;
        nextFloat():将取得的字符串转换成float型;
        nextBoolean():将取得的字符串转换成boolean型;


可通过以下步骤取得用户的输入,首先,用System.in 作为它的参数创建Scanner类的对象,此时,可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,可通过调用不同的 next 方法来获取相应类型的值.

使用如下:
  1. package com.itheima;

  2. import java.io.*;
  3. import java.util.Scanner;

  4. public class ReadDate {

  5.         public static void main(String[] args) throws IOException {
  6.                 Scanner scanner = new Scanner(System.in);
  7.                 System.out.println("请输入数据:");
  8.                 String in = scanner.next();
  9.                 System.out.println("你输入的是:" + in);
  10.         }

  11. }
复制代码

用Scanner获得用户的输入非常的方便,但是当你输入的数据中包含空格符,包括空格键,Tab键和Enter键时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑使 用BufferedReader类取得输入.



使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了.

在 BufferedReader 内包装 InputStreamReader, System.in 作为InputStreamReader的参数。InputStreamReader将读取到的字符的一行(换行代表一行结束)放到一个缓冲区,调用readLine()方法返回用户在按下回车键之前的所有字符输入(返回字符串),不包括换行符。
使用BufferedReader来取得输入,方法比较固定,每次使用前先如法炮制就可以了:
BufferedReader in = new BufferedReader(
      new InputStreamReader(System.in));
String text = buffer.readLine();

使用如下:

  1. package com.itheima;

  2. import java.io.*;
  3. import java.util.Scanner;

  4. public class ReadDate {

  5.         public static void main(String[] args) throws IOException {

  6.                 BufferedReader in = new BufferedReader(
  7.                                 new InputStreamReader(System.in));
  8.                 System.out.println("请输入数据:");
  9.                 String text = in.readLine();
  10.                 System.out.println("你输入的是:" + text);
  11.         }

  12. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马