带有Swing的Java计算器

时间:2016-10-09 11:25:43

标签: java swing calculator joptionpane

我不知道为什么这不起作用我这里没有编译错误,但程序总是返回else语句。我应该以其他方式定义操作还是其他方式调用它?

import javax.swing.JOptionPane;

public class Calculator1 {

public static void main(String []Args) {

  String firstNum;
  String operation;
  String secondNum;

  firstNum = JOptionPane.showInputDialog("Input a number.");
  secondNum = JOptionPane.showInputDialog("Input another number.");

  double num1 = Double.parseDouble(firstNum);
  double num2 = Double.parseDouble(secondNum);

  operation = JOptionPane.showInputDialog("Input an operation sign.");

  if (operation == "x") {
    System.out.println( num1 * num2 );
  }
  if (operation == "*") {
    System.out.println( num1 * num2 );
  }
  if (operation == "/") {
    System.out.println( num1 / num2 );
  }
  if (operation == ":") {
    System.out.println( num1 / num2 );
  }
  if (operation == "+") {
    System.out.println( num1 + num2 );
  }
  if (operation == "-") {
    System.out.println( num1 - num2 );
  }
  else {
    System.out.println("Please enter an appropriate operation sign.");
  }

} }

3 个答案:

答案 0 :(得分:0)

问题在于你的if语句。如果操作不等于" - "则始终执行else语句。这是因为每个if语句都是一个单独的代码块。

if(x) {}

if(y) {}

if(z) {}
else {}

您可以使用else而不是几个if语句来完成此工作。

if(x) {}
else if(y) {}
else if(z) {}
else {}

这样可行,但正确的方法是使用switch语句。

switch(operation) {
    case "x": result = num1 * num2 ;
    break;
    case "/": result = num1 / num2;
    break;
    case "-": result = num1 - num2;
    break,
    default: System.out.println(errorMessage);
}

答案 1 :(得分:-1)

你应该使用“x”.equals(操作);

答案 2 :(得分:-1)

首先,你需要使用if / else结构:

  if (operation == "x") {
    System.out.println( num1 * num2 );
  }
  else if (operation == "*") {
    System.out.println( num1 * num2 );
  }
  else if (operation == "/") {
    System.out.println( num1 / num2 );
  }
  // Continue...

接下来,在java中,您无法将字符串的内容与' =='进行比较。运营商。你应该使用equals方法:

 if (operation.equals("x")) {
    System.out.println( num1 * num2 );
  }
  else if (operation.equals("*")) {
    System.out.println( num1 * num2 );
  }
  else if (operation.equals("/")) {
    System.out.println( num1 / num2 );
  }
  // Continue...

这应该有效,但是。为什么不能使用' =='操作

字符串是java中的对象,您可以使用引用处理对象。因此,当您正在进行' =='时,您正在比较参考地址。如果要比较内容,则必须使用equals方法。

另一种选择是使用开关:

switch(operation)
{
    case "+":
            System.out.println(num1 + num2);
            break;
    case "-":
            System.out.println(num1 - num2);
            break;
    case "/":
            System.out.println(num1 / num2);
            break;
    case "x":
    case "*":
              System.out.println( num1 * num2 );
              break;
    default:
              System.out.println("Error!");
}