2015-04-26 1 views
0

ceci est mon entréeComment puis-je passer tous les entiers i cette boucle et arrêter avant la dernière ligne

first line 
5 6 
3 4 
2 3 
2 5 
1 0 
word 2 2 4 

je dois ajouter tous les entiers à un graphique, mais pas la dernière ligne (mot 1 2 4) ..

i ont la première ligne fente (première ligne, etc.) et les mettre dans un arraylist .. Pas de problème

mais j'ai cette boucle for

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

Je ne peux pas écrire dans le code combien de fois je veux mettre des entiers, parce que mon code devrait fonctionner généralement avec d'autres entrées ... Comment puis-je le faire arrêter avant la dernière ligne, je dois toujours être en mesure d'utiliser la dernière bufferreaderline

+0

Il semble que tout est sur une ligne en fonction de votre question. – Aiias

+0

Y a-t-il deux chaînes par ligne? – Aiias

+0

Pouvez-vous garantir que la dernière ligne n'est pas nécessaire? – Aiias

Répondre

0

Je voudrais simplement utiliser 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); 
2

En supposant que vous avez toujours une première ligne pour créer le graphique, et une dernière ligne pour faire quoi que ce soit. Ce que vous voulez parcourir pour ajouter des bords au graphique sont les lignes entre le premier et le dernier. J'espère que je devine bien. Cela suppose que votre entrée n'est pas vide, mais je suppose que vous pouvez gérer cela. J'espère que cela aide.