gpt4 book ai didi

java.lang.NumberFormatException : For Input string "" - When using scanner to read txt file

转载 作者:行者123 更新时间:2023-12-02 08:42:33 25 4
gpt4 key购买 nike

我遇到一个问题,需要针对二叉堆的单源最短路径问题实现 Dijkstra 算法。运行时间应该是O(ElogV)。

以下是从扫描仪读取的代码:

try {
Scanner sc = new Scanner(new File("../SOME_TEXT_FILE.txt"));
String line = sc.nextLine();
String[] ne = line.split(" ");

nodes = Integer.parseInt(ne[0].split("=")[1]);
edges = Integer.parseInt(ne[1].split("=")[1]);

constructGraph(sc);

调用constructGraph(sc)方法时会出现此问题。

这是该方法:

    static void constructGraph(Scanner sc) {
adjList = new ArrayList[nodes];

for (int i = 0; i < nodes; i++)
adjList[i] = new ArrayList<>();

for (int i = 0; i < nodes && sc.hasNext(); i++) {
String edge;
String n = sc.nextLine();
while (sc.hasNext() && !(edge = sc.nextLine()).isEmpty()) {
String[] e = edge.trim().split(" ");
int from, to, weight;

to = Integer.parseInt(e[0]);
weight = Integer.parseInt(e[1].trim());
adjList[Integer.parseInt(n)].add(new Edge(to, weight));
adjList[to].add(new Edge(Integer.parseInt(n), weight));
}
}
}

该错误告诉我问题出在

行中
weight = Integer.parseInt(e[1].trim());

以下是来自文本文件的输入示例:

n=1000 m=8544
0
25 244
108 275
140 273
159 313

1
24 187
43 182
65 331
155 369
182 222

2
31 504
35 403
176 249
229 68

最佳答案

因为两个数字之间有多个空格,所以必须使用不同的正则表达式进行拆分

String[] e = edge.trim().split("\\s+");

使用 split("") 分割 "1 2" 将生成一个大小为 3 且值为 ["1", "", "2 "] 其中中间元素是由左右空格字符分隔的空字符串。使用 \\s+ 表示您想要分割由一系列空白字符分隔的序列。

关于java.lang.NumberFormatException : For Input string "" - When using scanner to read txt file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61282837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com