im essayant d'arrêter une boucle qui prend des entiers après avoir tapé dans la console "fin", mais je ne peux pas sembler trouver un moyen de le faire. Après avoir saisi la chaîne (" Fin "), il doit me montrer le total des plats et des pots et de la quantité de détergents qu'il aille, et si la quantité de détergents requise est supérieure au montant disponible, il doit me montrer combien plus de besoin. < / p> p>
3 Réponses :
Je suggérerais d'imprimer des messages à la console pour confirmer à l'utilisateur que vous souhaitez entrer. Sinon, cela montrera simplement une fenêtre vierge. Je vous suggère également de définir une variable booléenne pour échapper à la boucle tandis que lorsque vous passez votre suffisamment à .nsext plutôt que .nntextline. De cette façon, vous redéfinissez votre booléen comme faux pour casser la boucle tandis que lorsque vous souhaitez également contrôler votre émission de programme un peu plus. Ceci compilé avec toutes les entrées de 1:
package com.climatedev.test;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("How many bottles?");
Scanner scan = new Scanner(System.in);
int bottles = scan.nextInt() * 750;
int cnt = 1;
int platesTotal;
int potsTotal;
int nrPlates = 0;
int nrPots = 0;
boolean run = true;
while(run){
System.out.println("How many plates?");
int plates = scan.nextInt();
platesTotal = plates * 5;
if(cnt%3==0) {
int pots = scan.nextInt();
nrPots = nrPots + pots;
nrPlates = nrPlates + pots;
potsTotal = pots * 15;
if (bottles < potsTotal + platesTotal) {
System.out.println("Not enough detergent, " + (potsTotal + platesTotal - bottles) + " ml. more necessary!");
break;
}
else
if(bottles >= potsTotal + platesTotal) {
System.out.println("Would you like to end the program? (Enter End)");
String enough = scan.next();
if (enough.equals("End")) {
if (bottles >= potsTotal + platesTotal) {
System.out.println("Detergent was enough!");
System.out.println(nrPlates + " dishes and " + nrPots + "pots were washed.");
System.out.printf("Leftover detergent %d ml.", bottles - potsTotal - platesTotal);
run = false;
System.out.println("Goodbye");
break;
}
}
}
}
cnt++;
}
}
}
Si vous souhaitez utiliser un objet de scanner pour les chaînes et les numéros, vous devez analyser le numéro: ou vous pouvez avoir deux scanners (un pour les cordes et une autre pour les chiffres): < / p>
Est-ce que cela répond à votre question? Scanner ignore NextLline () après avoir utilisé Suivant () ou Nextfoo ( )?
Utilisez
integer.parseint (nextline ()) code> au lieu deNextint () code>.Si vous souhaitez lire un mot unique, utilisez
suivant () code> au lieu denextline () code>. Si vous devez utilisernextline () code> envisager d'utiliserscan.skip ("\\ r") code> avant de s'assurer qu'il n'y a pas de séparateurs de ligne de dérivation après avoir appeléNEXTINT () CODE>.