什么是“枚举”?

时间:2013-07-24 23:25:20

标签: java enums

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

这是我的代码:

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.
    }

}

3 个答案:

答案 0 :(得分:2)

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

在applet中使用的一个好方法是替换字符串“Addition”,“Subtraction”,“Multiplication”和“Division”。

使用字符串的问题在于你可以获得任何价值,因此你需要“呵呵”代码。

您可以将其替换为:

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

然后,不是要求String,而是提供这四个选项,并返回Operation的实例。 它将保证是四个值中的一个。

然后,您可以使用“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);

答案 1 :(得分:0)

从文档中强调我的:

  

枚举类型是一种特殊的数据类型,它允许变量   一组预定义的常量。变量必须等于其中一个   已为其预定义的值。常见的例子包括   指南针方向(NORTH,SOUTH,EAST和WEST的值)和   一周中的几天。

     

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

     

在Java编程语言中,您可以使用以下命令定义枚举类型   枚举关键字。例如,您可以指定星期几的枚举   输入:

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

只要需要表示一组固定的常量,就应该使用枚举类型。这包括天然枚举类型,如行星   我们的太阳能系统和数据集,您可以在其中了解所有可能的值   编译时间 - 例如,菜单上的选项,命令行标志,   等等。

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

答案 2 :(得分:-1)

枚举是固定的东西,类似的东西。说,天,月等。在计算器程序中,枚举可用于支持的算术运算。喜欢加法,减法等。

enum calc{
ADD, SUB, MULTI, DIV
}

以便您可以像

一样使用它们
if (option == calc.SUB)