-1
votes

Pourquoi ma programmation ne boucle pas correctement? (Java)

Sortie souhaitée: Strong> Bonjour, j'essaie de créer un programme qui ajoute, soustraction, multiplication et division et boucles jusqu'à ce que vous appuyiez sur «E» pour quitter la boucle.

Ainsi, Je veux que cela ressemble à quelque chose comme ceci: p> xxx pré>

problème: strong> Mon problème est qu'une fois que vous entrez dans quelle opération vous voulez, cela ne fait que l'arithmétique Une fois et ensuite, il affiche mon message de sortie et se termine, mais cela n'est censé se produire que lorsque l'utilisateur entre "E ', mais le reste fonctionne, je pense! p>

Voici mon code strong > p>

import java.util.Scanner;

public class Calculator_Loop {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner(System.in);
    char selection;
    char choice = 'E';
    double num_1;
    double num_2;
    double result;


    System.out.println("A. Addition\nB. Subtraction\nC. Multiplication\nD. Division \n\nE. Exit");

    //System.out.println("\nPlease enter your selection, enter E to end:");
    //selection = input.next().charAt(0);
    //choice = Character.toUpperCase(selection);

    while(choice != 'E')
    System.out.println("\nPlease enter your selection, enter E to end:");
    selection = input.next().charAt(0);
    choice = Character.toUpperCase(selection);

    if(choice == 'A') {
        System.out.println("Enter your first number:");
        num_1 = input.nextDouble();
        System.out.println("Enter your second number:");
        num_2 = input.nextDouble();

        result = num_1 + num_2;
        System.out.println(result);

    }
    if(choice == 'B'){
        System.out.println("Enter your first number:");
        num_1 = input.nextDouble();
        System.out.println("Enter your second number:");
        num_2 = input.nextDouble();

        result = num_1 - num_2;
        System.out.println(result);

    }
    if(choice == 'C'){
        System.out.println("Enter your first number:");
        num_1 = input.nextDouble();
        System.out.println("Enter your second number:");
        num_2 = input.nextDouble();

        result = num_1 * num_2;
        System.out.println(result);
    }
    if(choice == 'D'){
        System.out.println("Enter your first number:");
        num_1 = input.nextDouble();
        System.out.println("Enter your second number:");
        num_2 = input.nextDouble();

        result = num_1 / num_2;
        System.out.println(result);
    }

    System.out.println("Thank you, have a nice day!");
    }
}


3 commentaires

pendant (choix! = 'E') manquant un {?


"Chaîne de caractère = 'E';" En combinaison avec "alors que (choix! = 'E')" ne participera jamais à la boucle et les boucles sont manquantes après le moment.


Je viens d'ajouter les bretelles frisées, mais maintenant, le programme ferme toujours tout de suite, affichant mon message de sortie. Que dois-je définir ma variable de choix? J'ai essayé 0, mais alors ça va sur une boucle folle pour toujours


4 Réponses :


0
votes

Bienvenue à. Problème est (aussi loin que possible) que vous n'avez rien / seulement la ligne d'impression dans votre boucle tandis que lorsque la boucle tandis que xxx

Java permet lorsque des boucles sans crochets, mais à une ligne maximale (et je Je vous recommande de les faire une seule ligne, mais qui est débattable), dès que vous avez besoin de plusieurs lignes, vous avez besoin de supports et devriez avoir l'indentation.


0 commentaires

0
votes

Vous devez entourer votre en boucle avec des supports pour le faire fonctionner comme vous le souhaitez: xxx

actuellement, votre pendant La boucle va tourner pour toujours (je pense), car la valeur de la graine de choisit est définie sur E .

Note latérale: envisagez d'utiliser un < code> commutateur instruction pour gérer les différentes valeurs de cas pour le choix.


0 commentaires

0
votes

Votre classe a deux problèmes.

  • L'un est l'attente manquante que les autres ont été formulées.
  • L'autre est qu'il n'entrera jamais la boucle car la condition est toujours fausse.

    afin de vous assurer que la boucle est entrée au moins une fois que vous avez besoin d'une correspondance. une construction de la construction au lieu de votre startcondition.

    Alors j'ai changé votre temps en boucle dans un traitement. Par là, j'ai ajouté la bouclée manquante.

    J'ai aussi changé votre sie à un commutateur comme un appelle de choix pour cela.

    et j'ai déplacé la question dans la boucle, alors l'utilisateur obtient donc l'utilisateur les informations de chaque itération. xxx


0 commentaires

0
votes

Au lieu d'utiliser les conditions de si, veuillez utiliser la boucle tandis que la boucle et le commutateur de commutation. Si la valeur d'entrée est autre que la valeur A, B, C ou D, quittez le code.

Le code ne prend que le premier caractère de votre entrée et entre dans un boîtier de commutation, où il comparera l'entrée avec les conditions requises. xxx


0 commentaires