2013-07-24 157 views
-2

我已閱讀關於「枚舉」,但我仍然沒有得到它。請有人請向我解釋它是如何工作的? 另外:在我的一個計算器代碼中有人告訴我在代碼中使用枚舉, 我應該在哪裏放置它,爲什麼?什麼是「枚舉」?

這裏是我的代碼:

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

} 
+2

[枚舉](http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ) – nachokk

+0

當double更合適時,雙重使用'Double'。 –

回答

1

枚舉本質上是一個約束值的集合。

在你的applet中一個很好的用法是替換字符串「加法」,「減法」,「乘法」和「分區」。

使用字符串的問題是,你可以得到任何值,因此你需要「嗯」的代碼。

您可以用替換此:

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

然後,而不是要求一個字符串,目前這四個選項,並返回操作的實例。 它將被保證是四個值之一。

然後,而不是一堆的「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); 
+0

哇,謝謝你的幫助!這些例子只是解釋了一切 - ish(可能還有更多的方法)。 –

+0

@ user2614523我建議你閱讀Oracle提供的文檔,快速谷歌會找到它。 –

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

-1

枚舉是固定類型相似的事物集合。說,日,月等在計算器程序中,枚舉可用於支持的算術操作。像加,減等

enum calc{ 
ADD, SUB, MULTI, DIV 
} 

,這樣就可以使用他們喜歡

if (option == calc.SUB) 
+0

啊,我明白了...非常感謝! –

+0

和什麼類型的選項? – nachokk

+0

@nachokk你的意思是我的變量「選項」?如果是這樣,它是一個字符串變量。 –