2014-02-20 142 views
0

基本上我正在接受一个表示文件的字符串输入。该文件可以包含整数,双精度或随机字符串。我试图迭代通过添加所有整数的文件,然后取其中所有的整数。我遇到的问题是当我得到一个不是整数的东西时。我不知道该如何捕捉和处理错误,然后迭代到文件的下一部分。我不能使用if语句并且我彻底卡住了。如何处理扫描仪异常

String storeVariables = null; 
    FileReader fileReader; 
    BufferedReader bufferedReader; 
    Scanner scanner = null; 
    int total = 0; 
    int itterate = 0; 


    try{ 
     fileReader = new FileReader(filename); 
     bufferedReader = new BufferedReader(fileReader); 
     scanner = new Scanner(bufferedReader); 

     while(scanner.hasNextInt()){ 
      total += scanner.nextInt(); 

      itterate++; 
     } 

    } 
catch(Exception e){ 


}  

    return total/itterate; 

}

回答

0

Scanner#nextInt可以抛出

InputMismatchException时 - 如果下一个标记不匹配整数的正则表达式,或超出范围
NoSuchElementException异常 - 如果输入被耗尽
IllegalStateException - 如果此扫描器已关闭

试试这个 -

while(scanner.hasNextInt()){ 
    try{ 
      total += scanner.nextInt(); 
      itterate++; 
    }catach(RuntimeException nfe){...} 
} 
+1

啊做得好好先生 – user2059856