使用Scanner时出现Java异常错误

标签 java error-handling

有人可以帮我看看问题出在哪里吗?我意识到使用 字符串种类 = sc.next(); 可能会带来问题。如果这是问题,我该如何解决它。先感谢您。这是代码。

import java.io.*;
import java.util.*;

public abstract class Account {

protected static AccountNumber accountNumber; 
protected Customer customer = null; // not to be used yet

public abstract MeterNumber[] getMeterNumbers();
public abstract boolean exists(String meterNumber, String tariff);

public static Account load(Scanner sc) {
   while (sc.hasNextLine()) {
       AccountNumber accountNumber = AccountNumber.fromString(sc.nextLine());
       String kind = sc.next();
       sc.nextLine();
       if (kind.equals("D")) {
           return new DomesticAccount(sc, accountNumber);
       }   else {
               return new CommercialAccount(sc, accountNumber);
           }
      }    {
               return null;
           }
   }

}

main中的代码如下。

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;


public class Testt {

    public static void main(String[] args) {


        Account.load(new Scanner("Accounts3.txt"));

        Map <AccountNumber, String> map1 = new HashMap <AccountNumber, String>();

        map1.put(Account.accountNumber, "hello");

        System.out.println(map1);

    }   
}  

这是我收到的错误。

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1371)
    at Account.load(Account.java:20)
    at Testt.main(Testt.java:14)

最佳答案

您正在字符串对象上创建扫描仪。这只是“Accounts3.txt”。这只是一行。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.lang.String)

我认为您需要创建文件扫描仪。

引用这个:

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)

所以你的主要方法将创建这样的扫描仪:

Account.load(new Scanner(new java.io.File("Accounts3.txt")));

关于使用Scanner时出现Java异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26686540/

相关文章:

java - 无法打开 Spring 类路径资源 [applicationContext.xml],因为它不存在

java - 在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

error-handling - reactjs尝试在渲染中捕获不捕获子级错误

error-handling - 在 Rust : concating results on Ok 中编写错误

c++ - 使用 fstream 在 C++ 中读取文件时显示额外的字符串

error-handling - 错误会停止制作程序吗?

java - 在 JavaScript 中将二进制字符串解析为字节

java - 用于测试的 Maven 配置文件

java - 在 Spring 中将 JPA EntityManager 和 Hibernate session 与共享事务管理器一起使用

excel - 当我调用函数以使用从其他宏的工作表中获取的数据时,错误弹出。谁能解释为什么说 'object required'?