mardi 4 avril 2017

Java skipping third case statement

This is a simple calculator that I need to get functioning with basic commands. The goal of this project is to program exceptions (very easy) but, I for the life of me, can not figure this out. I have looked everywhere.

Whether it's an if/else statement or a Switch/Case statement, the thrid statement always get skipped. When a user inputs "m" it is supposed to save the value of the calculation to a placeholder variable to be able to be recalled (Again, super simple). I added a default case statement to the addition section and added my save method to the default statement and it works perfectly. Every other command (r for recall, c for clear, and e for exit) also work great. m for save does not at all.....

import java.util.Scanner;

public class Calculator {
public static Scanner input = new Scanner(System.in);
public static double placeHolder;

public static void clear() {
    System.out.println("Save has been deleted, Screen has been cleared.");
}

public static void end() {
    System.out.println("Program ended..");
    input.close();
    System.exit(0);
}

public static void save(double initValue) {
    System.out.println("Number saved!");
    placeHolder = initValue;
}

public static void recall() {
    if (placeHolder != 0){
        System.out.println("Memory Place Holder Set To: " + placeHolder);
    }
    else {
        System.out.println("There is no data saved.");
    }
}

public static void commands() {
    System.out.println("e = end | c = clear | m = save | r = recall | o = continue");
    String command = input.nextLine();
    if (command.equals("e")){
        end();
    }
    else if (command.equals("c")){
        clear();
    }
    else if (command.equals("r")){
        recall();
    }

}




public static void main(String[] args) {
    boolean loop = true;
    while (loop == true){
        commands();
        System.out.println("Please enter what you would like to do: (+,-,*,/,%)");
        String function = input.nextLine();
        System.out.println("Enter the first number to be calucalted (If dividing, this is the numerator):");
        double n1 = input.nextDouble();
        System.out.println("Enter the second number to be calucalted (If dividing, this is the denominator):");
        double n2 = input.nextDouble();

        //=======================
        // Addition
        //=======================
        if (function.equals("+")){
            double sum = n1+n2;
            System.out.println(n1+"+"+ n2 +" = " + sum);
            System.out.println("e = end | c = clear | m = save | r = recall");
            String command = input.nextLine();
            input.nextLine();
            switch (command){
            case "e":
                end();
                break;
            case "c":
                clear();
                break;
            case "m":
                save(sum);
                break;
            case "r":
                recall();
                break;
            default: 
                System.out.println("Default");
                save(sum);
                break;
            }

        }
        //=======================
        // Subtraction
        //=======================
        else if (function.equals("-")){
            double sum = n1-n2;
            System.out.println(n1 + "-" + n2 +" = " + sum);
            System.out.println("e = end | c = clear | m = save | r = recall");
            String command = input.nextLine();
            input.nextLine();
            switch (command){
            case "e":
                end();
            case "c":
                clear();
            case "m":
                save(sum);
            case "r":
                recall();
            }
        }
        //=======================
        // Multiplication
        //=======================
        else if (function.equals("*")){
            double sum = n1*n2;
            System.out.println(n1 + "*" + n2 +" = " + sum);
            System.out.println("e = end | c = clear | m = save | r = recall");
            String command = input.nextLine();
            input.nextLine();
            switch (command){
            case "e":
                end();
            case "c":
                clear();
            case "m":
                save(sum);
            case "r":
                recall();
            }
        }
        //=======================
        // Division
        //=======================
        else if (function.equals("/")){
            double sum = n1/n2;
            System.out.println(n1 + "/" + n2 +" = " + sum);
            System.out.println("e = end | c = clear | m = save | r = recall");
            String command = input.nextLine();
            input.nextLine();
            switch (command){
            case "e":
                end();
            case "c":
                clear();
            case "m":
                save(sum);
            case "r":
                recall();
            }
        }
        //=======================
        // Mod
        //=======================
        else if (function.equals("%")){
            double sum = n1%n2;
            System.out.println(n1 + "%" + n2 +" = " + sum);
            System.out.println("e = end | c = clear | m = save | r = recall");
            String command = input.nextLine();
            input.nextLine();
            switch (command){
            case "e":
                end();
            case "c":
                clear();
            case "m":
                save(sum);
            case "r":
                recall();
            }
        }
    }   

        //=======================
        // Dictate loop duration:
        //=======================
        System.out.println("Would you like to continue? (Y|N): ");
        String ans = input.nextLine();
        if (ans.equals("N") || ans.equals("n")){
            System.out.println("Closing Program");
            loop = false;
            end();
        }
    }

}

Aucun commentaire:

Enregistrer un commentaire