我如何在这个循环中传递所有整数并在最后一行之前停止
How can i pass all integers i this loop and stop before the last line
这是我的输入
first line
5 6
3 4
2 3
2 5
1 0
word 2 2 4
我需要将所有整数添加到图形中但不是最后一行(单词 1 2 4)..
我已经拆分了第一行(第一行等)并将它们放入数组列表中。没问题
但是我有这个 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
假设您总是在第一行创建图表,在最后一行做任何事情。您想要迭代以将边添加到图形的是第一个和最后一个之间的线。
希望我猜对了。
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()));
}
这假定您的输入不为空,但我想您可以处理。
希望对您有所帮助。
我只会使用 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);
这是我的输入
first line
5 6
3 4
2 3
2 5
1 0
word 2 2 4
我需要将所有整数添加到图形中但不是最后一行(单词 1 2 4)..
我已经拆分了第一行(第一行等)并将它们放入数组列表中。没问题
但是我有这个 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
假设您总是在第一行创建图表,在最后一行做任何事情。您想要迭代以将边添加到图形的是第一个和最后一个之间的线。 希望我猜对了。
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()));
}
这假定您的输入不为空,但我想您可以处理。 希望对您有所帮助。
我只会使用 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);