标准输入流
我们需要学习一下System类
System类在java.lang包。该类是被final修饰说明是常量,该类继承了Object类。System类提供的设施包括标准输入,标准输出和错误输出流
System类有两个静态的成员变量,如下 1、public static final InputStream in :标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另一输入源 2、public static final PrintStream out:标准输出流。通常该流对应于主机环境或用户指定的显示输出或另一输出目的地
自己实现键盘录入数据: BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
需要自己实现键盘录入数据太麻烦了,所以Java就提供了一个类供我们使用: Scanner sc = new Scanner(System.in);
标准输入流的练习
xxxxxxxxxx
package ch20;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class a_5_1测试 {
//报红线就选中它,按Alt+Enter,抛出异常
public static void main(String[] args) throws IOException {
//循环可去掉
while (true) {
//public static final InputStream in :标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另一输入源
//上面的in是InputStream类型,被final修饰说明in是常量,被static修饰说明in可以被通过类名直接访问\
//通过类名直接访问。InputStream是字节输入流的抽象基类。通过多态的形式完成对is对象的初始化。右边返回的是子类对象
InputStream is = System.in;
//一次读一个字节
/*int by;
while((by=is.read())!=-1){
//读取的数据来自键盘输入。当键盘输入中文时会乱码。原因是这里每读一个字节就输出,而中文是占3个字节,所以会乱码
System.out.print((char)by);
}*/
//如果是字符流读取的话就不会中文乱码。思考:如何把字节流转换为字符流。用转换流即可解决,如下
InputStreamReader isr = new InputStreamReader(is);//把字节流is转换为字符流isr
//上面的转换只能解决单次读取一个中文不乱码。思考:使用字符流一次读一行,即读多个中文。用字符缓冲输入流的特有方法即可解决,如下
BufferedReader br = new BufferedReader(isr); //把上面那个转换的字符流isr包装为字符缓冲输入流br
System.out.println("请输入任意内容: ");
String line = br.readLine();
System.out.println("你输入的内容是: " + line);
System.out.println("--------------------");
//----------------------------------------------------------------------------------------------------------------------
//上面的三部分可以合并优化一下,如下
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请再输入任意内容: ");
String line2 = br2.readLine();
System.out.println("您输入的内容是: " + line2);
System.out.println("--------------------");
//如果要读取整数呢,如下
System.out.println("请最后输入一个整数: ");
int i = Integer.parseInt(br2.readLine());//把字符类型转为整型
System.out.println("您输入的整数是 " + i);
System.out.println("----------程序结束----------");
//--------------------------------------------------------------------------------------------------------------------
//上面那些需要自己实现键盘录入数据太麻烦了,所以Java就提供了一个类供我们使用,如下。下面的暂时先学一点点,后续会学
Scanner sc = new Scanner(System.in);
}
}
}