java.lang.NumberFormatException:对于输入字符串:"&|做Dijkstra';道路/城市的s算法

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.

我试图读取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方法:

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();
}