BufferedReader类
BufferedReader类属于一个缓冲的输入流,而且是一个字符流的操作对象。在java中对于缓冲流也分为两类:字节缓冲流(BufferedInputStream)、字符缓冲流(BufferedReader)
此类中的属性String readLine() throws IOException
System.in是InputStream类的子类,这个时候与Reader没有关系,要建立起联系就要用到InputStreamReader类
//利用BufferedReader实现键盘输入
public class TestPrintf {
public static void main(String[] args) throws IOException {
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in)) ;
System.out.println("输入信息;");
String str=buf.readLine();
System.out.println("输出"+str);
}
}
java.util.Scanner类
- 打印流解决的是OutputStream类的缺陷,BufferedReader解决的是InputStream类的缺陷。而Scanner解决的是BufferedReader类的缺陷(替换了BufferedReader类)
- 使用Scanner本身能够接收的是一个InputStream对象,那么也就意味着可以接收任意输入流,例如:文件输入流 ;Scanner完美的替代了BufferedReader,而且更好的实现了InputStream的操作。
public class TestPrintf {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.println("输入数据");
if (scan.hasNext()) {
System.out.println("输入内容为" + scan.next());
}
scan.close();
}
}
Scanner scan = new Scanner(System.in);
System.out.println("输入数据");
if (scan.hasNextInt()) {
System.out.println("输入内容为" + scan.nextInt());
} else {
System.out.println("输入的不是数字!");
}
scan.close();
}
}
不要忘记加包import.util.Scanner;System.in对应的是InputStream
1.取输入字母字符串中的第一个字符
Scanner scanner = new Scanner(System.in);
String ac = scanner.nextLine();
char cc=ac.charAt(0);
System.out.println(cc);
2.将数字字符串转换为int、double型
int s1=Integer.parseInt(ac);
Double s2=Double.parseDouble(ac);
System.out.println(s1+","+s2);
除了二进制文件拷贝的处理之外,那么只要是针对程序的信息输出都是用打印流(PrintStream、PrintWriter),信息输出使用Scanner。