BufferedInputStream 和 Scanner 有什么不同啊? BufferedInputStream 和 Scanner 有什么不同啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Scanner使用起来更加方便Scanner不象BufferedInputStream那样需要显式的去catch IO异常 另外就是Scanner提供了方便的数据输入检测比如 scanner.nextInt()读取整数 next() 读取字符串 等... BufferedInputStream需要显式的去catch IO异常 丢人啊,我都不知道有scanner ):-! 要真正弄懂两者间的区别,请看代码:import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Scanner;public class ScannerAndBufferedReader { static void scannerTest(){ boolean flag = false; Scanner sc = new Scanner(System.in); do{ System.out.print("Please input a:"); try { int a = sc.nextInt(); if(a < 0 || a > 9){ flag = true;//数据非法时,循环 }else{//数据合理就打印数据并退出循环 flag = false; System.out.println("a :" + a + "\nover!"); } } catch (Exception e) { flag = true;//数据非法时,循环 System.out.println("Scanner:Error data!"); } }while(flag); } static void bufferedReaderTest(){ boolean flag = false; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.print("Please input a:"); try { int a = Integer.parseInt(br.readLine().trim()); if(a < 0 || a > 9){ flag = true; }else{ flag = false; System.out.println("a :" + a + "\nover!"); } } catch (Exception e) { flag = true; System.out.println("BufferedReader:Error data!"); } }while(flag); } public static void main(String[] args) { ScannerAndBufferedReader.bufferedReaderTest();// ScannerAndBufferedReader.scannerTest(); }}从控制台输入非法数据——字母时的情况:一.使用Scanner:Please input a:hPlease input a:Scanner:Error data!Please input a:Scanner:Error data!Please input a:Scanner:Error data!Please input a:Scanner:Error data!Please input a:Scanner:Error data!……(无限循环了)二.使用BufferedReader:Please input a:kBufferedReader:Error data!Please input a:5a :5over!看出区别来了吧!两者的读入机制有区别的。虽然Scanner可以不用进行显示的声明异常,但是遇到非法的用户输入时程序就直接退出去了。这在实际的用户程序中是不行的,也就是说容错处理不好!所以建议还是用BufferedReader吧!----iycrh $ zz╭ ╮╭ ﹌╮. $$ z(o-.-o)(o-.-o) . $$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $$ IT者-IT开发者的网站-- $$ 10万篇技术资料--天天更新 $$ -----www.itzhe.cn----- $ java 怎么把Excel文件里的图片读取到某个指定的文件夹? for循环计算圆周率 求助 关于BeanUtils.populate异常 JAVA的基础问题,编译通过后,有中间字节代码文件#.class.可是用JAVA运行时, 一个简单的问题 求助关于hashmap存储的问题,付完整代码,马上给分 请问在哪里可以下载得到JB2006啊,请知道的朋友给个网址吧~~ 急!!!! 请问在unix系统下,java如何访问Access数据库?在线等待,万分感谢!!! 关于输入输出流的一个小问题 JDK的问题 新手的问题.为什么J2EE的类老是无法找到? 如何将int数组写入文件/读出?
Scanner不象BufferedInputStream那样需要显式的去catch IO异常
比如
scanner.nextInt()读取整数
next() 读取字符串
等...
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;public class ScannerAndBufferedReader { static void scannerTest(){
boolean flag = false;
Scanner sc = new Scanner(System.in);
do{
System.out.print("Please input a:");
try {
int a = sc.nextInt();
if(a < 0 || a > 9){
flag = true;//数据非法时,循环
}else{//数据合理就打印数据并退出循环
flag = false;
System.out.println("a :" + a + "\nover!");
}
} catch (Exception e) {
flag = true;//数据非法时,循环
System.out.println("Scanner:Error data!");
}
}while(flag);
}
static void bufferedReaderTest(){
boolean flag = false;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do{
System.out.print("Please input a:");
try {
int a = Integer.parseInt(br.readLine().trim());
if(a < 0 || a > 9){
flag = true;
}else{
flag = false;
System.out.println("a :" + a + "\nover!");
}
} catch (Exception e) {
flag = true;
System.out.println("BufferedReader:Error data!");
}
}while(flag);
}
public static void main(String[] args) {
ScannerAndBufferedReader.bufferedReaderTest();
// ScannerAndBufferedReader.scannerTest();
}
}
从控制台输入非法数据——字母时的情况:
一.使用Scanner:
Please input a:h
Please input a:Scanner:Error data!
Please input a:Scanner:Error data!
Please input a:Scanner:Error data!
Please input a:Scanner:Error data!
Please input a:Scanner:Error data!
……(无限循环了)二.使用BufferedReader:Please input a:k
BufferedReader:Error data!
Please input a:5
a :5
over!
看出区别来了吧!两者的读入机制有区别的。虽然Scanner可以不用进行显示的声明异常,但是遇到非法的用户输入时程序就直接退出去了。这在实际的用户程序中是不行的,也就是说容错处理不好!所以建议还是用BufferedReader吧!----iycrh
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $