-1

我已经读过“枚举”,但我仍然不明白。有人可以向我解释它是如何工作的吗?另外:在我的一个计算器代码中,有人告诉我在代码中使用枚举,我应该把它放在哪里,为什么?

这是我的代码:

import java.util.Scanner;
import javax.swing.JOptionPane;

public class calculatorApplet {
    Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Welcome to the Calculator!");
        String option = JOptionPane.showInputDialog(null,
                "Which calculator mode do you want?");
        if (option.equals("Addition")) {
            Double add1 = Double.parseDouble(JOptionPane.showInputDialog(null,
                    "Okay type the first number(s) of your addition problem."));
            Double add2 = Double.parseDouble(JOptionPane.showInputDialog(null,
                    "Now type the second number(s) of your addition problem."));
            Double preAdd = add1 + add2;
            Double Add = preAdd;
            JOptionPane.showMessageDialog(null, "The sum is " + Add + ".");
        } else {
            JOptionPane.showMessageDialog(null, "Huh?");
        }
        if (option.equals("Subtraction")) {
            Double sub1 = Double
                    .parseDouble(JOptionPane
                            .showInputDialog(null,
                                    "Okay type the first number(s) of your subtraction problem."));
            Double sub2 = Double
                    .parseDouble(JOptionPane
                            .showInputDialog(null,
                                    "Now type the second number(s) of your subtraction problem."));
            Double preSub = sub1 - sub2;
            Double Sub = preSub;
            JOptionPane.showMessageDialog(null, "The difference is " + Sub
                    + ".");
        } else {
            JOptionPane.showMessageDialog(null, "Huh?");
        }
        if (option.equals("Multiplication")) {
            Double mult1 = Double
                    .parseDouble(JOptionPane
                            .showInputDialog(null,
                                    "Okay type the first number(s) of your multiplication problem."));
            Double mult2 = Double
                    .parseDouble(JOptionPane
                            .showInputDialog(null,
                                    "Now type the second number(s) of your multiplication problem."));
            Double preMult = mult1 * mult2;
            Double Mult = preMult;
            JOptionPane.showMessageDialog(null, "The product is " + Mult + ".");
        } else {
            JOptionPane.showMessageDialog(null, "Huh?");
        }
        if (option.equals("Division")) {
            Double div1 = Double.parseDouble(JOptionPane.showInputDialog(null,
                    "Okay type the first number(s) of your division problem."));
            Double div2 = Double.parseDouble(JOptionPane.showInputDialog(null,
                    "Now type the second number(s) of your division problem."));
            Double preDiv = div1 / div2;
            Double Div = preDiv;
            JOptionPane.showMessageDialog(null, "The quotient is " + Div + ".");
        } else {
            JOptionPane.showMessageDialog(null, "Huh?");
        }
        // End of if statements.
    }

}
4

3 回答 3

2

枚举本质上是一组受约束的值。

在您的小程序中一个很好的用途是替换字符串“加法”、“减法”、“乘法”和“除法”。

使用字符串的问题是你可以得到任何值,因此你需要“huh”代码。

您可以将其替换为:

private enum Operation {ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION}

然后,不是要求一个字符串,而是呈现这四个选项,并返回一个操作实例。它将保证是四个值之一。

然后,您可以使用“switch”语句代替一堆“if”语句,如

Operation operation = askUserForOperation();
switch(operation) {
  case ADDITION:
     // do addition
     break;

   case SUBTRACTION:
     // do subtraction
     break;

   case MULTIPLICATION:
      // do multiplication
      break;

    case DIVISION:
      // do division
      break;
}

枚举也可以有成员,比如类。因此,如果您想将其他数据与您的枚举相关联,您可以。例如:

private enum Operation {
   ADDITION("Add"), SUBTRACTION("Subtract"), MULTIPLICATION("Multiply"), DIVISION("Divide");

   public final String name;

   Operation(String name) {
       this.name = name;      
   }
}

然后,您可以执行以下操作:

Operation operation = askUserForOperation();
System.out.println("you chose: " + operation.name);
于 2013-07-24T23:38:22.830 回答
0

从文档中,强调我的:

枚举类型是一种特殊的数据类型,它使变量能够成为一组预定义的常量。该变量必须等于为其预定义的值之一。常见示例包括指南针方向(NORTH、SOUTH、EAST 和 WEST 的值)和星期几。

因为它们是常量,所以枚举类型字段的名称是大写字母。

在 Java 编程语言中,使用 enum 关键字定义枚举类型。例如,您可以将星期几枚举类型指定为:

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}

您应该在需要表示一组固定常量的任何时候使用枚举类型。这包括自然枚举类型,例如我们太阳系中的行星和您在编译时知道所有可能值的数据集——例如,菜单上的选择、命令行标志等。

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

于 2013-07-24T23:28:32.280 回答
-1

枚举是一组固定的东西,类型相似。比如说,天、月等。在计算器程序中,枚举可用于支持的算术运算。比如加法、减法等。

enum calc{
ADD, SUB, MULTI, DIV
}

这样您就可以像使用它们一样

if (option == calc.SUB)
于 2013-07-24T23:29:09.093 回答