java.lang.NumberFormatException:对于输入字符串:"&|做Dijkstra';道路/城市的s算法
我试图读取2个文件并将它们存储在邻接矩阵中。但是,我得到一个错误: 线程“main”java.lang.NumberFormatException中的异常:用于输入字符串:“” 位于java.lang.NumberFormatException.forInputString(未知源) 位于java.lang.Integer.parseInt(未知源) 位于java.lang.Integer.parseInt(未知源) 位于project3.project3.storeData(project3.java:36) 位于project3.project3.main(project3.java:64) 这是(在我的主要方法中) 我的storeData方法:java.lang.NumberFormatException:对于输入字符串:"&|做Dijkstra';道路/城市的s算法,java,algorithm,graph,dijkstra,numberformatexception,Java,Algorithm,Graph,Dijkstra,Numberformatexception,我试图读取2个文件并将它们存储在邻接矩阵中。但是,我得到一个错误: 线程“main”java.lang.NumberFormatException中的异常:用于输入字符串:“” 位于java.lang.NumberFormatException.forInputString(未知源) 位于java.lang.Integer.parseInt(未知源) 位于java.lang.Integer.parseInt(未知源) 位于project3.project3.storeData(project3.
public static void storeData() throws IOException {
digraph = new Digraph();
File file1 = new File("city.dat");
Scanner cities = new Scanner(file1);
File file2 = new File("road.dat");
Scanner roads = new Scanner(file2);
while(cities.hasNext()) {
String delims = "[ ]+";
String[] tokens = cities.nextLine().split(delims);
if(tokens.length > 5){
int number = Integer.parseInt(tokens[0]);
String code = tokens[1];
String cityName = tokens[2] + " " + tokens[3];
int pop = Integer.parseInt(tokens[4]);
int elev = Integer.parseInt(tokens[5]);
digraph.add(new City(number, code, cityName, pop, elev));
}
else {
int number = Integer.parseInt(tokens[0]);
String code = tokens[1];
String cityName = tokens[2];
int pop = Integer.parseInt(tokens[3]);
int elev = Integer.parseInt(tokens[4]);
digraph.add(new City(number, code, cityName, pop, elev));
}
}
while(roads.hasNext()) {
digraph.insertRoad(roads.nextInt() -1, roads.nextInt() -1, roads.nextInt());
}
cities.close();
roads.close();
}
我想弄清楚为什么会发生这种情况,这样我就可以继续我剩下的课程了。任何帮助都将不胜感激!谢谢大家! 不要使用nextLine(),请尝试next()和nextInt()。您正试图将一个空的
字符串
解析为int
,这是不可能的。@Kevin Esche您建议我怎么做?我正在读取的文件是city.dat(数字,2个字母,人口,海拔)和road.dat是(数字,数字,数字)字符串[]tokens=cities.nextLine().split(delims);您正在从控制台(假定)获取此行中的输入,该输入是null还是空的?或者您的分隔符“delims”导致令牌[0]为空?异常消息非常清楚。你有什么不明白的?我刚刚发现我需要从我正在阅读的文件中删除空白。。。
64 | storeData();
public static void storeData() throws IOException {
digraph = new Digraph();
File file1 = new File("city.dat");
Scanner cities = new Scanner(file1);
File file2 = new File("road.dat");
Scanner roads = new Scanner(file2);
while(cities.hasNext()) {
String delims = "[ ]+";
String[] tokens = cities.nextLine().split(delims);
if(tokens.length > 5){
int number = Integer.parseInt(tokens[0]);
String code = tokens[1];
String cityName = tokens[2] + " " + tokens[3];
int pop = Integer.parseInt(tokens[4]);
int elev = Integer.parseInt(tokens[5]);
digraph.add(new City(number, code, cityName, pop, elev));
}
else {
int number = Integer.parseInt(tokens[0]);
String code = tokens[1];
String cityName = tokens[2];
int pop = Integer.parseInt(tokens[3]);
int elev = Integer.parseInt(tokens[4]);
digraph.add(new City(number, code, cityName, pop, elev));
}
}
while(roads.hasNext()) {
digraph.insertRoad(roads.nextInt() -1, roads.nextInt() -1, roads.nextInt());
}
cities.close();
roads.close();
}