0
votes

Java nécessite une valeur sentinelle de deux entrées distinctes

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:

Entrez des miles ou -1 pour quitter

-1

Entrez des gallons

-1

terminer xxx


1 commentaires

N'oubliez pas que l'utilisateur peut entrer -1 sur les gallons, mais vous ne vérifiez pas la valeur de cette variable pour cette condition de sortie.


4 Réponses :


0
votes

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;
}


0 commentaires

0
votes

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);
        }

}
}


5 commentaires

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



0
votes

Vous devez vérifier si l'utilisateur entré -1 à l'intérieur du pendant boucle. S'ils le faisaient, quittez la boucle à l'aide de Break , puis terminez le programme.

mpg 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.

J'ai décidé de faire la condition de boucle true puisque la boucle doit casser si miles ou < / em> gallons est -1. xxx


0 commentaires

0
votes

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);
    }


}


0 commentaires