1、由于System.in 连接的是程序和控制台
如果控制台没有输入任何东西,那么包装后的readLine() 就只有等待
readLine()是读取一行,控制台什么都没有,readLine()怎么知道换行符在哪里,怎么停止下来,
所有就会等待用户输入,如果直接就输入回车,那么readLine()方法就马上执行完了,
所有当我输入回车后,readLine()方法才能执行完,接着才能执行后面的代码。
2、代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MyScanner {
private BufferedReader br;
public MyScanner(InputStream is){
//因为系统标准输入流是一个字节流,用户无法输入字节
//将其转换为字符流
br = new BufferedReader(new InputStreamReader(is));
}
public String readLine(){
try {
//接收键盘输入
return br.readLine();
//由于br这个流,连接的是控制台,必须读取到换行符,方法才能结束,而现在控制台
// 什么都没有,所以会停留在这里,用户可以输入,只有输入换行符才会结束这个方法
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//根椐用户需要将键盘输入转为字符串和数字
public String nextLine() {
return readLine();
}
public int nextInt(){
return Integer.parseInt(readLine());
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyScanner sc = new MyScanner(System.in);
String s = sc.nextLine();
System.out.println(s);
int i = sc.nextInt();
System.out.println(i);
}
}