【发布时间】:2016-12-30 10:03:28
【问题描述】:
我目前正在写我的图论学士学位论文,并使用 java 扫描仪将带有边的 txt 文件转换为我的 Java 类图。我的 txt 文件如下所示:
1 2 72 3
2 3 15 98
4 7 66 49
5 6 39 48
6 9 87 97
8 13 31 5
整数的顺序为:源顶点、汇顶点、成本、容量。
我的代码如下:
Graph graph = new Graph(false);
File f = new File("Filepath");
Scanner in = new Scanner(f);
while (in.hasNextLine())
{
for (int i =1; i<= numberEdges; i++)
{
String s = in.nextLine();
try (Scanner inscan = new Scanner(s)) {
while (inscan.hasNext())
{
int source = inscan.nextInt();
int sink = inscan.nextInt();
double cost =inscan.nextDouble();
double capacity = inscan.nextDouble();
Vertex Source = new Vertex(source);
Vertex Sink = new Vertex(sink);
Edge edge = new Edge(Source,Sink, cost, capacity);
graph.addEdge(edge);
}
}
}
}
in.close();
我尝试扫描字符串中的每一行,然后将字符串扫描到我的变量中。 它总是在 for 循环的第一行抛出“NoLineFound”异常,如果我尝试输出这些行,我什么也得不到。但是当我禁用第二个扫描仪并重试时,我得到了输出中的所有行,但最后仍然是“NoLineFound”异常。
我检查了我的 txt 文件,最后一行没有 UTF8 行结尾,但我不知道如何给它一个。
【问题讨论】:
-
您能否添加您对
File f = new File("Filepath");的确切代码 -
查看这个问题stackoverflow.com/questions/7209110/… 的接受答案。你需要先检查
in.hasNextLine(),然后再做nextLine() -
我认为 for 循环没有意义。不用它试试看
-
谢谢!问题是for循环。我昨天刚开始使用扫描仪,并没有意识到 while(in.hasnextline()) 和我的 for 循环一样