Java从控制台获取数据的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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[]);
以上是关于Java从控制台获取数据的方法的主要内容,如果未能解决你的问题,请参考以下文章