2017-05-22 2 views
1

J'utilise IntelliJ et j'ai un problème avec un scanner. Le dernier élément de l'entrée est manquant dans la sortie. Des idées?Pourquoi le dernier élément d'entrée est-il manquant dans Scanner?

entrée: 1, 2, 3
sortie: 1, 2

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in).useDelimiter(", "); 
    while (sc.hasNext()) { 
     System.out.print(sc.nextInt()); 
    } 
} 

Répondre

1

Parce que le scanner ne se fait pas à lire System.in: le flux d'entrée standard est pas fermé, et toujours en attente de fin de jeton (prochaine occurrence de ", "), ou fin du flux.

Vous devez également remplacer sc.hasNext() par sc.hasNextInt() car vous consommez sc.nextInt().

Ensuite, vous pouvez exécuter votre programme sur la ligne de commande, il doit montrer le 3 correctement:

echo -n "1, 2, 3" | java MyScannerExample 

Cependant:

echo "1, 2, 3" | java MyScannerExample 

se pas montrer le 3 parce que la chaîne d'entrée est en fait "1, 2, 3\n", donc le dernier jeton est "3\n" qui n'est pas un nombre entier.