Java lisant plusieurs octets à partir d'une seule ligne
Je suis en train de travailler sur un programme, que je veux permettre à un utilisateur d'entrer des multiples entiers lorsque vous y êtes invité. J'ai essayé d'utiliser un scanner, mais j'ai trouvé qu'il n'enregistre que le premier entier saisi par l'utilisateur. Par exemple:
Entrer de multiples entiers: 1 3 5
Le scanner seulement obtenir le premier entier 1. Est-il possible d'obtenir tous les 3 différents nombres entiers à partir d'une ligne et d'être en mesure de les utiliser plus tard? Ces entiers sont les positions des données dans une liste, j'ai besoin de manipuler basés sur les utilisateurs d'entrée. Je ne peux pas poster mon code source, mais je voulais savoir si c'est possible.
source d'informationauteur Steven
Vous devez vous connecter pour publier un commentaire.
Je l'utilise tout le temps sur hackerearth
Essayer cette
Par défaut, le Scanner utilise le délimiteur modèle "\p{javaWhitespace}+", qui correspond à au moins un espace blanc comme délimiteur. vous n'avez pas à faire quelque chose de spécial.
Si vous voulez correspondre à l'espace(1 ou plus) ou une virgule, remplacer le Scanner invocation avec cette
Scanner a une méthode hasNext():
Vous voulez prendre les chiffres dans une Chaîne, puis utiliser
String.split(" ")
pour obtenir les 3 numéros.Chaque indice du tableau va contenir une Chaîne représentation des nombres qui peut être fait pour être
int
s parInteger.parseInt()
Si vous savez comment beaucoup entiers que vous obtiendrez, vous pouvez utiliser
nextInt()
méthodePar exemple
Ici est de savoir comment vous utilisez le Scanner à traiter autant de nombres entiers que l'utilisateur souhaite d'entrée et de mettre toutes les valeurs dans un tableau. Cependant, vous ne devriez utiliser cette option si vous ne savez pas combien d'entiers à l'utilisateur d'entrée. Si vous le savez, vous devez tout simplement utiliser
Scanner.nextInt()
le nombre de fois que vous voulez pour obtenir un entier.Vous êtes probablement à la recherche de Chaîne de caractères.split(String regex). Utiliser "" pour votre regex. Cela vous donnera un tableau de chaînes que vous pouvez analyser individuellement dans ints.
Cela fonctionne bien ....
int a = nextInt();
int b = nextInt();
int c = nextInt();
Ou vous pouvez les lire dans une boucle
Mieux impliquer l'ensemble de la ligne de chaîne, puis utiliser StringTokenizer pour obtenir les numéros (en utilisant l'espace comme délimiteur ), puis de les analyser comme des nombres entiers . Cela fonctionne pour un nombre n d'entiers dans une ligne .
Utilisant ce sur de nombreux codage de sites:
Supposons que vous êtes donné 3 cas de test avec chaque ligne de 4 entier entrées séparées par des espaces
1 2 3 4
5 6 7 8
,1 1 2 2
CAS 2: LORSQUE le NOMBRE D'ENTIERS dans chaque ligne n'est PAS DONNÉ
Noter que vous avez besoin de couper() tout d'abord:
trim().split("\\s+")
- autrement, par exemple, le fractionnementa b c
émet deux chaînes vides premièreÀ L'Aide De BufferedReader -