有人可以帮我看看问题所在。我意识到使用 String kind = 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;
}
}
}
主要代码如下。
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)
答案 0 :(得分:0)
您正在字符串对象上创建扫描程序。这只是“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")));