Retour au début du code Java(menu principal de la calculatrice)


Je suis nouveau et un peu noob à Java, et j'essaie de faire une calculatrice, je n'ai pas tout testé pour voir si cela fonctionne, mais j'ai un problème. Je n'arrive pas à comprendre comment revenir au menu principal après avoir effectué un calcul. J'ai ajouté cette question à la fin pour qu'elle invite l'utilisateur à quitter ou à revenir au menu principal. Je ne sais pas quoi mettre dans le si(whatnow == Y){ wtf suis-je censé faire pour revenir au menu principal?? }. Désolé si c'était un peu long ou quelque chose, mais ils sont vraiment tous les mêmes, alors ignorez simplement le calcul. Toute aide appréciée. Je suis vraiment nouveau en java et je dois probablement écrire ce code à nouveau.

package practice;

import java.util.Scanner;

public static void main(String[] args){

    Scanner scan = new Scanner(System.in);

    int choice;
    int firstnumber;
    int secondnumber;
    int result;
    char whatnow;

    System.out.println("Welcome to StemCalc Z Edition(Integers only)!");
    System.out.println("Made with love and basic Java");
    System.out.println("Which math operation would you like to perform?");
    System.out.println("");
    System.out.println("WARNING: Enter the integer x, press ENTER, then enter y");
    System.out.println("");
    System.out.println("[1]-Addition (+)");
    System.out.println("[2]-Subtraction (-)");
    System.out.println("[3]-Multiplication (x)");
    System.out.println("[4]-Division (/)");
    System.out.println("");
    System.out.println("Enter your choice[1-4 or 99]:"); choice = scan.nextInt();

    while ((choice < 1 || choice > 4) && choice != 99) {
        System.out.println("Please enter 1, 2, 3, 4, or 99: ");
        choice = scan.nextInt();
    }

    if (choice == 1){
        System.out.println("Enter two integer to add(x + y)");

        firstnumber = scan.nextInt();
        secondnumber = scan.nextInt();
        result = firstnumber + secondnumber;

        System.out.println(firstnumber + " + " + secondnumber + " = " + result);
    }

    else if (choice == 2) {
        System.out.println("Enter two integers to subtract(x - y)");

        firstnumber = scan.nextInt();
        secondnumber = scan.nextInt();
        result = firstnumber - secondnumber;

        System.out.println(firstnumber + " - " + secondnumber + " = " + result);
    }

    else if (choice == 3) {
        System.out.println("Enter two integers to multiply(x * y)");

        firstnumber = scan.nextInt();
        secondnumber = scan.nextInt();
        result = firstnumber * secondnumber;

        System.out.println(firstnumber + " * " + secondnumber + " = " + result);
    }

    else if (choice == 4) {
        System.out.println("Enter to integers to divide(x / y)");

        firstnumber = scan.nextInt();
        secondnumber = scan.nextInt();

        while (secondnumber == 0) {
            System.out.println("ERROR-CANNOT DIVIDE TO ZERO! Type another integer:");
            secondnumber = scan.nextInt();
        }

        result = firstnumber / secondnumber;

        System.out.println(firstnumber + " / " + secondnumber + " = " + result);
        }

    else if (choice == 99) {
        System.exit(0);

    }

    while (choice !=99) {
        System.out.println("Do you want to continue calculating? [Y/N]:"); whatnow = scan.next().charAt(0);

        if (whatnow == 'Y' || whatnow == 'y') {

        }

        if (whatnow == 'N' || whatnow == 'n') {
            System.exit(0);
        }
    }
}

}

Ps: J'ai modifié la fin pour ressembler à ceci avec un certain temps (vrai) au début:

`while (choice !=99) {
            System.out.println("Do you want to continue calculating? [Y/N]:"); whatnow = scan.next().charAt(0);

            while(whatnow != 'Y' || whatnow != 'y' || whatnow !='N' || whatnow !='n') {
     System.out.println("Enter [Y/N] only:"); whatnow = scan.next().charAt(0);
            }

            if (whatnow == 'N' || whatnow == 'n') {
                System.exit(0);`
Author: bummi, 2017-09-11

3 answers

Il vous suffit de répéter tout ce que vous avez écrit jusqu'à ce que l'utilisateur insère N. Donc tout ce que vous voulez faire est de tout mettre dans une boucle while(true), dont la dernière instruction sera:

if (whatnow == 'N' || whatnow = 'n') {
    System.exit(0);
}

De cette façon, si l'utilisateur insère autre chose que N ou n la boucle le ramènera à la section d'impression du menu principal, vous devrez peut-être ajouter un test sur la valeur de whatnow de la même manière que vous l'avez fait pour choice.

, Le résultat sera comme ceci:

public static void main(String[] args){

    ...

    while(true){
        System.out.println("Welcome to StemCalc Z Edition(Integers only)!");

        ...

        while (choice !=99) {
            System.out.println("Do you want to continue calculating? [Y/N]:"); whatnow = scan.next().charAt(0);

            //insert some loop to ensure that the value of whatnow will be either Y or N

            if (whatnow == 'N' || whatnow == 'n') {
                System.exit(0);
            }
        }
    }
}

MODIFIER

Voici un exemple de code de ce que j'avais anticipé avec mon dernier commentaire:

public static void main(String[] args){
    char whatnow = 'Y';
    Scanner scan = new Scanner(System.in);

    while (whatnow != 'N' && whatnow != 'n') {
        int choice = printMenuAndAsk(scan);

        if (choice == 99)
            break;
        else performOperation(choice, scan);

        System.out.println("Do you want to continue calculating? [Y/N]:"); 
        whatnow = scan.next().charAt(0);

        while(whatnow != 'N' && whatnow != 'Y' && whatnow != 'n' && whatnow != 'y') { 
            System.out.println("Incorrect answer");
            whatnow = scan.next().charAt(0);
        }
    }   
    scan.close();   
}

public static int printMenuAndAsk(Scanner scan) {
    int choice;

    System.out.println("Welcome to StemCalc Z Edition(Integers only)!");
    ...
    System.out.println("Enter your choice[1-4 or 99]:"); 
    choice = scan.nextInt();

    while ((choice < 1 || choice > 4) && choice != 99) {
        System.out.println("Please enter 1, 2, 3, 4, or 99: ");
        choice = scan.nextInt();
    }

    return choice;
}

public static void performOperation(int operation, Scanner scan) {
    System.out.println("Enter first:");
    int firstnumber = scan.nextInt();
    System.out.println("Enter second:");
    int secondnumber = scan.nextInt();

    if (choice == 1)
        System.out.println(firstnumber + " + " + secondnumber + " = " + (firstnumber+secondnumber));
    else if (choice == 2) 
        System.out.println(firstnumber + " - " + secondnumber + " = " + (firstnumber-secondnumber));
    else if (choice == 3) 
        System.out.println(firstnumber + " * " + secondnumber + " = " + (firstnumber*secondnumber));
    else if (choice == 4) {
        while (secondnumber == 0) {
            System.out.println("ERROR-CANNOT DIVIDE TO ZERO! Type another integer:");
            secondnumber = scan.nextInt();
        }
        System.out.println(firstnumber + " / " + secondnumber + " = " + (firstnumber/secondnumber));
    }
}
 1
Author: Luca Negrini, 2018-02-07 15:28:22

Au lieu d'essayer de mettre une boucle while à la fin, essayez de mettre tout votre code dans un blocwhile(true). En utilisant une instruction if à la fin, vous pouvez demander si l'utilisateur veut continuer notre non. Quittez la boucle en utilisant le mot-clébreak. Essayez de sortir comme ceci:

if(input == 'n'){break;}

Ce que cela fait, c'est qu'il quitte la boucle while. Vous pouvez exécuter plus d'instructions en dehors du bloc while.

 0
Author: Abhyudaya Sharma, 2017-09-11 15:21:08

, Vous pouvez le changer comme suit:

Votre méthode principale en tant que telle:

public static void main(String[] args) {
        calc();
    }

, puis créer une méthode nommée calc():

public static void calc() {

        Scanner scan = new Scanner(System.in);

        //the rest of your code

 } else if (choice == 99) {
            System.exit(0);

        }

        calc(); //call the method again at the end of your code
                //remove your while loop

    }
 0
Author: achAmháin, 2017-09-11 15:39:10