2016-01-08 1 views
0

Lorsque j'exécute mon programme qui est un lecteur de fichiers simple je reçois l'exception: - événement> ajouter Exception dans le thread « principal » Nom de l'événement: java.util.NoSuchElementException : Aucune ligne trouvéeException java.util.NoSuchElementException: Aucune ligne trouvée

J'ai essayé de lire les messages précédents à propos de la même exception mais sans aucune aide, essayé hasNextLine(); N'a pas travaillé. Je ne sais pas où se situe le problème. Voici la méthode qui détermine le nom des événements et où l'exception est levée.

private String setEventName() { 
    String EventName; 
    do { 
     System.out.print("Name of event: "); 
     EventName = tangentbord.nextLine(); 
     EventName.trim(); 
     if (EventName.length() <= 1 || EventName.isEmpty() || EventName.contains(" ")) { 
      System.out.println("Invalid input, try again"); 
     } 
    } while (EventName.length() <= 1 || EventName.isEmpty() || EventName.contains(" ")); 
    EventName= normalisera(EventName); 
    for (int i = 0; i < events.size(); i++) { 
     if (events.get(i).EventName().equals(EventName)) { 
      System.out.println("Event allready exist"); 
      EventName = null; 
     } 
    } 
    return EventName; 
} 
+0

Le message d'exception doit vous indiquer exactement quelle ligne l'a provoqué. –

+4

Pourquoi vérifiez-vous 'tangentbord' et lisez ensuite' scanner'? Idéalement, vous devriez vérifier 'scanner' avant de lire' scanner' et vérifier 'tangentbord' avant de lire cela. – apokryfos

+1

Et une fois que vous corrigez la discordance du scanner, vous devrez utiliser hasNextLine() ... –

Répondre

1

Le "décalage" dans le bloc de code top:

while (tangentbord.hasNext()) { 
     String line = scanner.nextLine(); 
     ... 
} 

est un hareng rouge!

Dans le second bloc de code, en setEventName(), vous devez vérifier tangentbord.hasNextLine() avant de faire:

EventName = tangentbord.nextLine(); 

(ou l'envelopper dans un try ... catch si vous préférez).