2009-09-17 9 views
0

Je suis en train de travailler pour obtenir ceUtilisation de hasNextLine en Java, ne lit pas nextLine après nextInt

System.out.println("Please enter what SOCKET NUMBER you" + 
"wish to connect to"); 
      int sockname = Integer.parseInt(inFromUser.nextLine()); 

    System.out.println("Please enter what HOSTNAME you" + 
"wish to connect to"); 
    String hostname = inFromUser.nextLine(); 

Le problème est que je ne peux pas obtenir le nom d'hôte à égale quel que soit l'entrée utilisateur. Je pensais que cela avait à voir avec hasNext ou une variante de cela, mais je ne suis pas sûr. Des pensées?

+0

Qu'est-ce que vous obtenez dans le nom d'hôte? – akf

+0

Qu'est-ce que inFromUser? Utilisez-vous Scanner? Avez-vous vérifié que le nom de la station contient ce que vous attendiez? Si c'est le cas, alors le nom d'hôte devrait en effet obtenir le texte sur la ligne suivante. –

Répondre

3

Il peut y avoir "\ n" dans le tampon d'entrée après nextLine(), donc l'appel suivant le lit et le renvoie. Vous devez effacer le tampon après avoir lu int

inFromUser.skip("\\n+"); 
1

java.io.BufferedReader a une méthode readLine(). Utiliser ça. Si vous utilisez Scanner.nextLine(), vous devez savoir que si votre position est juste avant un retour à la ligne, vous obtiendrez une chaîne vide. Cependant, le nextLine suivant retournera en effet une ligne complète de texte (la même chose que readLine).