这是我的输入
first line
5 6
3 4
2 3
2 5
1 0
word 2 2 4
我需要将所有整数添加到图形而不是最后一行(字1 2 4)..
我已将第一行(第一行等)拆分并将它们放入arraylist ..没有问题
然后我有这个for-loop
for (int i = 0; i < (amount of lines); i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
graph.addEdge(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
我无法在代码中写入多少次我希望它放置整数,因为我的代码应该通常与其他输入一起运行... 如何让它在最后一行之前停止,我仍然需要能够使用最后一个bufferreaderline
答案 0 :(得分:2)
假设你总是有一个第一行来创建图形,而最后一行来做任何事情。您想要迭代以将边添加到图中的是第一个和最后一个之间的线。 我希望我猜对了。
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
List<String> lines = new ArrayList<>();
/* Iterating over the whole input first*/
while((line = in.readLine()) != null) {
lines.add(line);
}
String firstLine = lines.get(0);
String lastLine = lines.get(lines.size() - 1);
StringTokenizer stok = new StringTokenizer(firstLine);
ArrayList<String> pax = new ArrayList<String>();
while(stok.hasMoreTokens()){
pax.add(stok.nextToken());
}
int v = pax.size();
Graaph graph = new Graaph(V);
/* Create the edges */
for (int i = 1; i < lines.size()-1; i++) {
StringTokenizer st = new StringTokenizer(in.readLine());
graph.addEdge(Integer.parseInt(st.nextToken()),
Integer.parseInt(st.nextToken()));
}
这假设你的输入不是空的,但我想你可以处理它。 我希望这会有所帮助。
答案 1 :(得分:0)
我只会使用try-catch
:
ArrayList<Integer> nums = new ArrayList<Integer>();
String lastLine = "";
try {
while ((lastLine = in.readLine()) != null) {
StringTokenizer st2 = new StringTokenizer(lastLine);
graph.addEdge(Integer.parseInt(st2.nextToken()),
Integer.parseInt(st2.nextToken()));
}
}
catch (NumberFormatException e) {}
System.out.println(lastLine);