christian bernardu
christian bernardu

Reputation: 3

How do I tell my program to ignore an instruction if a certain case is true?

I'm a very beginner java coder and I'm coding a simple calculator using swing, and I want to implement square roots into the operators. I want it to be so that in the case that the operator is a square root, the calculator wont ask for the second number.

package swingcalculator;

import javax.swing.JOptionPane;

public class SwingCalculator {
    
    public static void main(String[] args) {
        
        double num1, num2, answer;
        String operator;
        
        num1 = Integer.parseInt(JOptionPane.showInputDialog("Enter your first number:"));
        operator = JOptionPane.showInputDialog("Enter your operator (+ , - , * , /, ^, sqrt):"); 
        num2 = Integer.parseInt(JOptionPane.showInputDialog("Enter your second number number:"));
        
        switch(operator) {
            
            case "+":
                answer = num1 + num2;
                break;
                
            case "-":
                answer = num1 - num2;
                break;
            
            case "*":
                answer = num1 * num2;
                break;
                
            case "/":
                answer = num1 / num2;
                break;
                
            case "sqrt":
                answer = Math.sqrt(num1);
                break;
                
            case "^":
                answer = Math.pow(num1, num2);
                break;
                
            default:
                System.out.println("You have entered an invalid operator");
                return;
                
        }
        
        if (Boolean.parseBoolean(operator) == Boolean.parseBoolean("sqrt")){
            JOptionPane.showMessageDialog(null, "Square root of " + num1 + " = " + answer);
        }
        else{
        JOptionPane.showMessageDialog(null, num1 + " " + operator + " " + num2 + " = " + answer);
        }
    }

Any help would be appreciated!

Upvotes: 0

Views: 54

Answers (2)

Andy Turner
Andy Turner

Reputation: 140514

Put everything after the operator = line inside a conditional (you can also move the JOptionPane.showMessageDialog lines inside the appropriate block of the conditional statement, because you don't need to check operator again):

operator = JOptionPane.showInputDialog("Enter your operator (+ , - , * , /, ^, sqrt):"); 
if (!operator.equals("sqrt")) { 
  num2 = Integer.parseInt(JOptionPane.showInputDialog("Enter your second number number:"));

  switch (...) { ... }

  JOptionPane.showMessageDialog(null, num1 + " " + operator + " " + num2 + " = " + answer);
} else {
  JOptionPane.showMessageDialog(null, "Square root of " + num1 + " = " + answer);
}

Upvotes: 1

nobalG
nobalG

Reputation: 4630

operator = JOptionPane.showInputDialog("Enter your operator (+ , - , * , /, ^, sqrt):"); 
if(!operator.equals("sqrt"){
     num2 = Integer.parseInt(JOptionPane.showInputDialog("Enter your second number number:"));
}      

Read the second number only if operator is not 'sqrt', however your program seems to have many anomalies, as suggested to you in comments by others

Upvotes: 0

Related Questions