-lors de la boucle ne fonctionne pas comme il devrait
Ok donc en gros je vais avoir du mal à trouver pourquoi cela ne fonctionne pas comme je pense qu'il devrait, et besoin d'aide pour arriver à la sortie droite. J'ai essayé de jouer avec ce format un peu de moyens, mais rien ne fonctionne, et je ne comprends vraiment pas pourquoi. Voici les instructions, suivi par ma source:
INSTRUCTIONS
Écrire une boucle qui lit les chaînes à partir de l'entrée standard où la chaîne est la "terre", "air", ou "l'eau". La boucle se termine lorsque les "xxxxx" (cinq caractères x) est lu. D'autres chaînes sont ignorés. Après la boucle, votre code doit imprimer 3 lignes: la première consiste en la chaîne "de la terre:" suivi du numéro de la "terre" des chaînes de lire dans, la seconde consistant en de la chaîne d'air":" suivi par le numéro de "l'air" chaînes de lire dans, et le troisième, composé de la chaîne "de l'eau:" suivi par le numéro de "l'eau" chaînes de lire dans. Chacun de ces derniers doit être imprimé sur une ligne distincte.
ASSUMER la disponibilité d'une variable, stdin , qui fait référence à un Scanner objet associé avec l'entrée standard.
SOURCE:
int land = 0;
int air = 0;
int water = 0;
do
{
String stdInput = stdin.next();
if (stdInput.equalsIgnoreCase("land"))
{
land++;
}else if (stdInput.equalsIgnoreCase("air"))
{
air++;
}else if (stdInput.equalsIgnoreCase("water"))
{
water++;
}
}while (stdin.equalsIgnoreCase("xxxxx") == false); //I think the issue is here, I just dont't know why it doesn't work this way
System.out.println("land: " + land);
System.out.println("air: " + air);
System.out.println("water: " + water);
- ce n'est pas de travail? dites à votre prévus et réels de sortie!
- quel est votre stdin type ?
- Un autre "ne fonctionne pas comme il devrait" question
Vous devez vous connecter pour publier un commentaire.
Vous stockez des informations utilisateur dans
stdInput
mais votre tout vérifiestdin
. Essayer de cette façon,Cela Fonctionne:)
Je viens d'envoyer ce code pour codelab et il fonctionne très bien.
Écrire une boucle qui lit les chaînes à partir de l'entrée standard où la chaîne est la "terre", "air", ou "l'eau". La boucle se termine lorsque les "xxxxx" (cinq caractères x ) est lu. D'autres chaînes sont ignorés. Après la boucle, votre code doit imprimer 3 lignes: la première consiste en la chaîne "de la terre:" suivi du numéro de la "terre" des chaînes de lire dans, la seconde consistant en de la chaîne d'air":" suivi par le numéro de "l'air" chaînes de lire dans, et le troisième, composé de la chaîne "de l'eau:" suivi par le numéro de "l'eau" chaînes de lire dans. Chacun de ces derniers doit être imprimé sur une ligne distincte.
Je pense que vous voulez
stdInput.equalsIgnoreCase("xxxxx") == false
au lieu destdin.equalsIgnoreCase("xxxxx") == false
.Vous avez raison, le problème est de savoir où vous avez indiqué. La solution est de pas lire à nouveau à partir de stdin:
Aussi, vous devez déclarer le
stdInput
avant la boucle de sa portée atteint la condition du while:Une autre façon serait d'une boucle for:
!
avant pour la négative.