Java 控制台输入数据
来源:互联网 发布:pandora软件 编辑:程序博客网 时间:2024/05/01 03:40
Java 中从控制台打印输出一般是用的 System.out,相反的,从控制台输入,用的是 System.in。这里总结三种从控制台输入的方法,分别适用于不同的场景,比如有时候需要挨个字节的输入,有时候需要按空格中断输入,有时候又需要整行输入。
字节输入 System.in.read()
一次读入一个字节的方式读入数据,抛出 IOException,构造方法有三种
read():每次读取一个字节数据,并返回字节对应的 int 类型十进制值(ASCII码值),如果读取结束,返回 -1,
read(byte[] b):每次读取一个字节数据,将数据存入 byte[] 数组中,并返回读入的字节数据的长度,如果读取结束,返回 -1
read(byte[] b,int off,int len):每次读取一个字节数据,总共读取 len 长度的数据,并从 byte[] 数组指定起始位置(off)开始存入数据,如果读取结束,返回 -1
代码演示:
public static void main(String[] args) { //演示 System.in.read() 从控制台输入数据 int r=0; try { while ((r=System.in.read())!=-1){ System.out.print("read: "+(char)r+" \n"); } } catch (IOException e) { e.printStackTrace(); } }
运行结果:
public static void main(String[] args) { //演示 System.in.read(byte[] b) 从控制台输入数据 byte[] b=new byte[10]; try { int c= System.in.read(b); System.out.println("read size: "+c); for (int i=0;i<b.length;i++){ System.out.print(" "+(char)b[i]); } } catch (IOException e) { e.printStackTrace(); } }
运行结果:可以看到,输入中是记录了换行符的
public static void main(String[] args) { //演示 System.in.read(byte[] b,int off,int len) 从控制台输入数据 byte[] b=new byte[10]; try { int c= System.in.read(b,1,3); System.out.println("read size: "+c); for (int i=0;i<b.length;i++){ System.out.print(" "+(char)b[i]); } } catch (IOException e) { e.printStackTrace(); } }
运行结果:可以看到,这里选择读取三个字节的输入,在byte[]数组中从索引为 1 的地方开始存
按空格中断输入:Scanner
Scaner 可以读取一个字符串或者一个数组,构造方法中传入 System.in,通过 hasNext()判断输入是否完成,通过 next() 得到输入的数据,其中如果遇到space,tab 或者 enter,就会中断读取,但是输入的数据会缓存,并在下次调用 next() 时返回空格后的内容
public static void main(String[] args) { //演示 Scanner 从控制台输入数据 Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String s = scanner.next(); System.out.println("read: " + s); } }
运行结果:调用 next() 方法,输出字符或者数字等字节数据,并且根据空格会有中断,从第二次调用中可以看到,while 循环执行了三次,并将输入按照空格切分成三个字符串
整行输入:BufferedReader
使用BufferedReader 可以输出含有空格的字节数据,构造方法同样需要传入 System.in,通过调用readLine()返回输入的数据,还有一个read()方法,用法和System.in是一样的
public static void main(String[] args) { //演示 BufferedReader 从控制台输入数据 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { String s = br.readLine(); System.out.println("read: " + s); } catch (IOException e) { e.printStackTrace(); } }
运行结果:
- Java 控制台输入数据
- JAVA-从控制台输入数据
- Java从控制台输入数据
- 控制台输入数据类java.util.Scanner
- JAVA接收控制台数据Scanner类---输入
- 关于java控制台获取输入数据
- java 从控制台输入数据的案例
- 控制台输入数据
- java程序控制台输入数据的一种方法
- java小例子:读取控制台用户输入数据
- Java中从控制台输入自定义的变量数据!
- Java处理控制台输入的长度可变的数组数据
- Java控制台输入,输出!
- Java 控制台输入
- Java控制台输入
- java控制台输入
- Java控制台输入
- java 获取控制台输入
- How To Install Docker on Fedora 23
- Android 输入法显示隐藏的问题
- (OK) Fedora23——Docker——CORE—testing
- Ubuntu LAMP环境搭建(直接输命令)
- 量子计算核心突破!Shor算法实现或使密码成摆设
- Java 控制台输入数据
- Running docker on Android
- jQuery的deferred对象详解
- (OK) Install codeblocks_16.01 on Fedora23
- org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
- (OK) 运行cBPM—Fedora23
- Eclipse快捷键
- POJ 3254 状态压缩DP
- iOS去除数组重复元素