2010-09-15 80 views
0

我被要求写一个文件阅读器的方法,我做了一个工作正常,但无法取得第二个一个工作,保持我打开booms.txt文件后,收到此错误问题的缓冲文件读取

Error:java.util.NoSuchElementException

公共实例变量,我使用的文件阅读器

try

{ 
     int x; 
     int y; 
     double boomTime; 
     boolean isAHit; 
     Scanner lineScanner; 
     bufferedFileReader = new BufferedReader(new FileReader(aFile)); 
     String currentLine = bufferedFileReader.readLine(); 
     while (currentLine != null) 
     { 
      lineScanner = new Scanner(currentLine); 
      lineScanner.useDelimiter(","); 
      x = lineScanner.nextInt(); 
      y = lineScanner.nextInt(); 
      boomTime = lineScanner.nextDouble(); 
      isAHit = lineScanner.nextBoolean(); 
      booms.add(new Boom(x,y,boomTime)); 
      currentLine = bufferedFileReader.readLine(); 
     } 
    } 
    catch (Exception anException) 
    { 
     System.out.println("Error:"+anException); 
    } 
    finally 
    { 
     try 
     { 
      bufferedFileReader.close(); 
     } 
     catch (Exception anException) 
     { 
      System.out.println("Error:" +anException); 
     } 

} 

} 

public List booms;

代码请帮忙

+3

为什么不查询详情堆栈跟踪? _anException.printStackTrace(); _ – 2010-09-15 19:31:49

+0

你知道哪个例外的错误是从哪里打印的?尝试改变你的输出是不同的 - 例如,使一个“读取错误:”和一个“关闭错误:”。然后,就像Nikita建议的那样,尝试打印堆栈跟踪以查看抛出异常的位置。 – aperkins 2010-09-15 19:33:59

+0

它来自错误1 – user448792 2010-09-15 19:38:24

回答

2

也许文件末尾有空行?

+0

对不起,你失去了我Maurice – user448792 2010-09-15 19:34:51

+0

扫描仪抛出异常。文件中必须有一行不符合期望的语法 – 2010-09-15 19:57:35

0

正如maurice所说,可能是文件中空白或不正确的数据行。

异常(虽然您没有发布堆栈跟踪)正在被Scanner.next...调用抛出。

Scanner.nextInt

NoSuchElementException - if input is exhausted

这将更为明显,你和这个论坛的成员,如果你想包括堆栈跟踪。下次尝试将anException.printStackTrace();放入您的catch块中。

0

知道了它我有一个布尔变量,它不在它正在阅读的文件:),它的所有关于休息一下,再看一遍。

+1

队友,您不会发布自己的答案而不接受答案。使用其中一个答案旁边的“勾号”,并在需要时添加评论。 – pstanton 2010-09-15 19:51:50

0

我正在使用另一种不那么复杂的方法。只是这样做:

Scanner diskScanner = new Scanner(new File("pathname")); 

例如读取从指定的文件一个整数只需键入

int blahblahblah = diskScanner.nextInt();