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.