comment lire int,double,et de la peine de chaîne en utilisant la même variable scanner
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=new String();
int x=sc.nextInt();
double y=sc.nextDouble();
s = sc.next();
System.out.println("String:"+s);
System.out.println("Double: "+y);
System.out.println("Int: "+x);
}
}
de l'analyse d'un seul mot pleasd donner des suggestions...
hasNextInt
,hasNextDouble()
explorer ces méthodes.- est-il vraiment en double ?
- et keppil je ne pense pas que sa dupe OP n'est pas à l'aide de
nextLine()
n'importe où - ce n'est pas en double .mais il n'était pas clair pour moi
next()
ne lit un mot, c'est le but. Si vous voulez lire une ligne entière utilisernextLine();
- voter à rouvrir
- pouvez-vous revenir sur la question car elle n'est pas dupe de ce thread?
- J'ai pensé qu'il était assez proche, et a accepté de répondre à expliquer et résolu la situation ici. Heureusement que tu l'as il a rouvert depuis plusieurs personnes n'étaient pas d'accord avec moi.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce code:
Parce que le Scanner objet va lire le reste de la ligne, où ses précédents lire laissé.
Si il n'y a rien sur la ligne, il est tout simplement consomme le retour à la ligne et se déplace vers le point de départ de la ligne suivante.
Après un double de la déclaration, vous devez écrire:
scan.nextLine();
C'est ce que
next();
est destiné à faire. Si vous souhaitez lire plusieurs mots, la solution la plus simple est de lire une ligne de texte. par exemple,Si vous avez besoin de lire de texte multi-ligne, vous avez besoin de séance d'entraînement d'une stratégie pour ce faire, tels que la lecture, le tout dans une boucle jusqu'à ce que vous avez une ligne vide.
Remarque: si la réponse est similaire à Scanner est de sauter nextLine() après utilisation de la fonction next(), nextInt() ou d'autres nextFoo() méthodes la différence, c'est que vous n'avez pas jeter le reste de la ligne, mais plutôt vous utilisez la Chaîne de caractères retournée par
nextLine();
Si vous vous attendez à l'entrée pour être
alors vous voulez utiliser la suggestion ci-dessus, toutefois, si l'entrée est sur plusieurs lignes comme ceci
Vous aurez besoin de jeter le reste de la ligne avec une classe supplémentaire pour
nextLine()
comme le lien ci-dessus suggère.nextLine
au lieu de cela, puis son entrée sera ignorée.nextLine
au lieu denext
de lire l'ensemble de la ligne, il sera exécuté dans le même problème que demandé dans la question. Son nouveaunextLine
appel de lire le reste de la ligne, qui a été laissé de l'état de lanextDouble()
appel. Avec "la remarque que vous pourriez écrire" je voulais dire que vous pouvez le conduire à cette question pour obtenir ce problème résolu, quand il se heurte à elle.Pourquoi ne pas vous ignorer comme suit
Je préfère suggérer d'essayer ce bloc de code
J'espère que ce ne serait pas l'impasse sur la lecture de la Chaîne d'entrée (ou tout simplement lire un seul mot reste à sauter de la Ligne) après un double ou une entrée entière..
suivez-moi sur fb/ayur.sharma
Si vous utilisez le nextLine() méthode qui suit immédiatement la nextInt() la méthode, rappelons que nextInt() lit entier jetons; à cause de cela, le dernier caractère de saut de ligne pour la ligne d'entrée entière est toujours en attente dans la mémoire tampon d'entrée et la prochaine nextLine() va lire le reste de l'entier de la ligne (qui est vide).
Lors de la commutation entre la lecture des jetons de l'entrée et de la lecture d'une gamme complète d'entrée, vous avez besoin de faire un autre appel à nextLine() parce que le Scanner objet va lire le reste de la ligne, où ses précédents lire laissé.
Si il n'y a rien sur la ligne, il est tout simplement consomme le retour à la ligne et se déplace vers le début de la ligne suivante.
Après un double de la déclaration, vous devez écrire: scan.nextLine();