码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-14 12:30:10      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

一、使用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[]数组中。返回的是这个数据的长度

 

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

 

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

标签:

原文地址:http://www.cnblogs.com/qneverever/p/4423975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!