« Salut, Amigo. Tu fais du super travail. Voici un nouvel exercice pour toi : écris un programme qui accepte des données à partir du clavier et affiche un texte qui utilise ces données : »
Pour l'exercice Plan de conquête du monde
Si vous utilisez Scanner en enchaînant la lecture des deux entrées clavier de cette manière :
Scanner scanner = new Scanner(System.in);
int nbOfYearsBeforeConquest = scanner.nextInt();
String name = scanner.nextLine();
Ça ne marchera pas car vous allez vous retrouvez avec une chaîne vide pour le nom. En effet, lorsque vous faite scanner.nextInt(), le curseur reste sur la fin de ligne (le caractère \n) donc le scanner.nextLine() va lire cette ligne vide, c'est-à-dire le vide après le nombre sur la même ligne, et name sera une chaîne vide.
Il existe deux solutions :
- Soit on insert un scanner.nextLine() entre les deux lignes de saisie des entrées pour que le curseur de lecture se place à la ligne après la lecture du nombre. Ainsi le curseur se trouvera bien au niveau du nom lorsqu'il lira la ligne pour le name
Scanner scanner = new Scanner(System.in);
int nbOfYearsBeforeConquest = scanner.nextInt();
scanner.nextLine();
String name = scanner.nextLine();
- Soit on utilise la fonction scanner.next() qui lira seulement le mot suivant. À noter que ça marche dans cet exercice car on veut dire seulement un mot, et non une phrase ou un nom à particule comme par exemple "Ana De Armas" où ne lirait que le premier mot "Ana"
Scanner scanner = new Scanner(System.in);
int nbOfYearsBeforeConquest = scanner.nextInt();
String name = scanner.next();
Pour l'exercice de conquête du monde.
Les notions obligé que le nom en premier, oui c'est vrai que lorsque on définir l'année avant le nom le code exécuter correctement.
Mais reste une faute
Attention, sur l'exercice 7 (celui avec Kevin), pour passer la vérification il faut que notre programme demande à saisir l'âge en premier et le nom en second.
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String ans = bufferedReader.readLine();
String name = bufferedReader.readLine();
System.out.println(name+" conquerra le monde dans "+ans+" ans. Moua-ha-ha !");
J'essaye de faire les missions sur Intellij Idea, cependant pour l'exercice "Plan de conquête du Monde", je n'ai pas le Input Data d'affiché, comme on peut le voir dans l'EDI de CodeGym. Y a-t-il un moyen de résoudre ce problème ?
GO TO FULL VERSION