Java从控制台获取数据的方法

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

java从控制台获取数据的方法一、使用System.in.read()一次获取一个字节

输入再多数据,只会获取第一个字节的int形式。获取的是字节,而不是字符,所以如果输入中文字符,强转后会得到乱码

1 try {2 int in_num=System.in.read(); //获取的是一个字节的int类型3 System.out.PRintln("强转前:"+in_num);4 System.out.println("强转后:"+(char)in_num);5 } catch (IOException e) {6 e.printStackTrace();7 }

1.输入:你

强转前:196强转后:?

2.输入:@

强转前:64 强转后:@

3.输入:space(一个空格)

强转前:32 强转后: //强转后得到的是一个空格,有占位。只是看不到而已

4.输入:enter(换行)

强转前:13 强转后: //强转后得到的是一个换行。

5.输入:tab(水平制表符)

强转前:9 强转后: //强转后得到的是一个水平制表符(8个空格)

二、使用Scanner获取

1 Scanner in=new Scanner(System.in);2 System.out.println("获取字符串:"+in.next());3 //System.out.println("获取一行数据:"+in.nextLine());

1.单独用in.next()方法获取字符串,输入tab、space、enter时,会从这里为断点,只会获取之前的数据,如:

输入:我爱 你到底 获取字符串:我爱//会自动去除前后的空格trim()方法

2.单独用in.nextLine()方法获取一行输入的数据,无论输入tab、space都会完整的获取到,当输入enter时,表示输入完毕。

输入数据:让 我深深 去爱你获取一行数据:让 我深深 去爱你//不会去除前后的空格

3.如果使用完in.next()后没有关闭,就使用in.nextLine(),则in.nextLine()会获取前一方法截断后的数据。

如果关闭后还执行in.nextLine()则会抛出异常:java.lang.IllegalStateException: Scanner closed

输入:我留不住 所有的岁月获取字符串:我留不住获取一行数据: 所有的岁月

三、使用BufferedReader获取数据

1 InputStream is=System.in;2 InputStreamReader isr=new InputStreamReader(is);3 BufferedReader br=new BufferedReader(isr);4 try {5 System.out.println(br.readLine());6 } catch (IOException e) {7 e.printStackTrace();8 }

1.获取一个字符的int类型:br.read();

2.获取一行字符串:br.readLine();//不会自动去除前后空格

3.把获取到的数据装入到一个char[]数组中。返回的是这个数据的长度

int length=br.read(char[]);

(个人学习笔记,有错请说出来。谢谢!)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航