Java IO 键盘录入

package io.transstream.demo;

import java.io.IOException;
import java.io.InputStream;
import java.util.function.IntConsumer;import com.sun.org.apache.regexp.internal.recompile;

import javafx.scene.shape.SVGPath;

/*
 * 读取一个键盘录入的数据,并打印在控制台上
 * 
 * 键盘本身就是一个标准的输入设备
 * 对于java而言 这种输入设备都有对应的对象
 * 
 * 
 * 
 */

public class ReadKey {

	public static void main(String[] args) throws IOException {
		//ReadKey();
		ReadKey2();
	}

	private static void ReadKey2() throws IOException {
		/*
		 * 获取用户键盘录入的数据
		 * 并将数据变成大写显示在控制台上
		 * 如果用户输入的是over 结束键盘lure
		 * 
		 * 思路:
		 * 1.因为键盘录入只读一个字节 要判断是否是over 需要先将读取到的字节拼成字符串
		 * 2 那就需要一个容器  StringBuilder
		 * 3 在用户回车之前将录入的数据变成字符串判断即可 
		 * 
		 */
		
		//1 创建容器 
		StringBuilder sb=new StringBuilder();
		//2 获取键盘读取流
		
		InputStream in=System.in;
		
		//定义变量记录读取到的字节,并循环获取
		int ch=0;
		
		while((ch=in.read())!=-1) {
			
		//在存储之前需要判断是否是换行标记  因为换行标记不存储
			if(ch=='\r')
				continue;
			if(ch=='\n') {
				String str=sb.toString();
				if("over".equals(str)) {
					return;
				}
				System.out.println(str.toUpperCase());
				sb.delete(0, sb.length());
			}
				
			//将读取到的字节存储到StringBulider中
			else
			sb.append((char)ch);
			
			
		}
	}

	private static void ReadKey() throws IOException {
		InputStream in=System.in;//系统的流对象只有一个 给了in 如果in.close()就再也打不开了
		
		int ch=in.read();
		int ch1=in.read();
		int ch2=in.read();
		
		System.out.println(ch);
		System.out.println(ch1);
		System.out.println(ch2);
		
		/*in.close(); //此流不需要关
		InputStream in2=System.in;//系统的流对象只有一个 给了in 如果in.close()就再也打不开了
*/	}

}

你可能感兴趣的:(Java学习)