我如何在这个循环中传递所有整数并在最后一行之前停止

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