Je viens de rencontrer l'itération contrôlée sentinelle et j'ai des difficultés. Je dois faire un programme qui obtient le kilométrage et les gallons utilisés à partir de l'utilisateur, calcule le montant total des mpg. J'essaie d'utiliser -1 comme valeur sentinelle pour quitter la boucle lorsque l'utilisateur a terminé, mais lorsque je vais entrer la valeur, Java ne résiste pas au programme. Au lieu de cela, il demande une autre valeur de gallons. Comment puis-je obtenir pour accepter la valeur sentinelle de la première entrée?
Exemple: p>
Entrez des miles ou -1 pour quitter P>
-1 P>
Entrez des gallons p>
-1 p>
terminer p>
4 Réponses :
Java évalue uniquement le pendant la boucle code> chaque fois qu'il se termine. Par conséquent, vous devrez vérifier manuellement si miles code> était -1 et casser la boucle. while (miles != -1) {
System.out.println("Enter miles or -1 to exit");
miles = input.nextInt();
if (miles == -1) break;
System.out.println("Enter gallons or -1 to exit");
gallons = input.nextInt();
totalMiles = totalMiles + miles;
totalGallons = totalGallons + gallons;
}
Il suffit d'ajouter 2 conditions supplémentaires dans la boucle (si avec une pause) pour quitter immédiatement
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// processing phase
int miles = 1;
int gallons = 1;
int totalMiles = 0;
int totalGallons = 0;
float mpg = 0;
System.out.println("Enter miles or -1 to exit");
miles = input.nextInt();
System.out.println("Enter gallons");
gallons = input.nextInt();
while (miles != -1) {
System.out.println("Enter miles or -1 to exit");
miles = input.nextInt();
if(miles == -1) break;
System.out.println("Enter gallons or -1 to exit");
gallons = input.nextInt();
if(gallons == -1) break;
totalMiles = totalMiles + miles;
totalGallons = totalGallons + gallons;
}
if (miles == -1) {
System.out.print("Terminate");
}
else{
mpg = (float) totalMiles / totalGallons;
System.out.println(mpg);
}
}
}
Seul code n'est pas une réponse, expliquez ce que vous avez fait et comment cela répond au problème
Je viens d'ajouter 2 conditions supplémentaires dans la boucle (si avec une pause) pour sortir de tout moment, immédiatement
Pas en commentaire, modifiez votre message et donnez du texte;) Vous ne trouverez jamais une bonne réponse acceptée avec le code uniquement;)
Désolé, je nouveau dans Stackoverflow)
Ne sois pas désolé, je viens de te dire;) Apprendre juste avec le temps
Vous devez vérifier si l'utilisateur entré -1 à l'intérieur du J'ai décidé de faire la condition de boucle pendant code> boucle. S'ils le faisaient, quittez la boucle à l'aide de Break code>, puis terminez le programme. mpg code> est toujours imprimé dans la boucle, mais seulement après la vérification de la vérification. Cela garantit que l'utilisateur a donné une entrée valide. P> true code> puisque la boucle doit casser si miles code> ou < / em> gallons code> est -1. p>
Merci à tous pour l'aide. Voici le code fini et de travail:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int miles = 0;
int gallons = 0;
int totalMiles = 0;
int totalGallon = 0;
double mpg = 0;
double totalMpg = 0;
while(miles != -1){
System.out.println("Enter mileage or -1 to exit: ");
miles = input.nextInt();
if(miles == -1){
break;
}
System.out.println("Enter gallons or -1 to exit: ");
gallons = input.nextInt();
mpg = (double) miles / gallons;
System.out.printf("MPG: %.4f%n", mpg);
if(gallons == -1){
break;
}
totalMiles = totalMiles + miles;
totalGallon = totalGallon + gallons;
}
if (miles == -1){
totalMpg = (double) totalMiles / totalGallon;
System.out.printf("Total used is %.4f%n", totalMpg);
}
}
N'oubliez pas que l'utilisateur peut entrer
-1 code> sur les gallons, mais vous ne vérifiez pas la valeur de cette variable pour cette condition de sortie.