【问题标题】:Java - Reading first word of text fileJava - 读取文本文件的第一个单词
【发布时间】:2014-04-28 15:32:07
【问题描述】:

我无法阅读文本文件的第一个单词。如果第一个单词等于“Circle”,我想在我的数组中创建一个新的 Circle 对象。

            FileInputStream fileIn = new FileInputStream("shapeFile.txt");
            Scanner scan = new Scanner(fileIn);
            while(scan.hasNextLine()) {
                String shape = scan.next();
                if(shape.equals("Circle")) {
                  myShapes.addShape(new Circle(scan.nextInt(), scan.nextInt(), scan.nextInt(), Color.RED));
                }
            }

我收到上述代码的以下错误,指向行 String shape = scan.next();

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1371)
    at shapes.ShapeManagement.main(ShapeManagement.java:151)
Java Result: 1

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • @Cyber​​neticTwerkGuruOrc 如果他/她没有,那将是编译时错误,而不是运行时错误。第 151 行是 String shape = scan.next(); 吗?
  • 你能添加一个输入文件的样本吗?
  • @pennstatephil 好点。是时候喝杯咖啡了。

标签: java java.util.scanner


【解决方案1】:

您可能会遇到此异常的原因是,scan.hasNextLine() 可以返回 true,即使该行上没有标记。如果您在标记后没有标记时调用scan.next(),您将得到您所看到的java.util.NoSuchElementException

所以,将scan.hasNextLine() 换成scan.hasNext()

或者,您可以将scan.next() 替换为scan.nextLine(),然后检查该行中的第一个单词是否是您要查找的单词。对于包含大量行的文件,这可能会更快。

我希望这会有所帮助。

Link to the Scanner API for reference.

【讨论】:

    【解决方案2】:

    您可能需要修改代码如下:

     FileInputStream fileIn = new FileInputStream("shapeFile.txt");
     Scanner scan = new Scanner(fileIn);
     int[] var1 = new int[3];
    
     while(scan.hasNext()) {
         String shape = scan.next();
         if(shape.equals("Circle")) {
           for(int i = 0; i < 3;i++) {
              if(scan.hasNextInt()) {
                var1[i] = scan.nextInt();
              } else {
                break;
              }
           } 
    
           myShapes.addShape(new Circle(var1[0], var1[1], var1[2], Color.RED));
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-08
      • 2022-08-16
      • 2014-12-10
      • 1970-01-01
      • 2012-11-27
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多