2013-07-24 5 views
-2

Я читал о «перечислении», но я до сих пор его не понимаю. Может кто-нибудь объяснить мне, как это работает? Кроме того: в одном из кодов моего калькулятора кто-то сказал мне использовать перечисление в коде, , где я должен положить его и почему?Что такое "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. 
    } 

} 
+2

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

+0

Двойное использование «Двойной», когда «двойной» является более подходящим. –

ответ

1

Перечисление по существу сдержан множество значений.

Хорошее применение в вашем апплете - заменить строки «Дополнение», «Вычитание», «Умножение» и «Дивизия».

Проблема с использованием строк заключается в том, что вы можете получить какую-либо ценность вообще, поэтому ваша потребность в коде «huh».

Вы могли бы заменить это:

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

Затем, вместо того, чтобы просить строку, представить эти четыре варианта, и возвращает экземпляр операции. Гарантируется, что это будет одно из четырех значений.

Тогда вместо связки «если» заявление, вы можете использовать «переключатель» заявление, как в

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

Вау, спасибо за помощь! Эти примеры только что объяснили все-иш (возможно, для этого есть еще больше). –

+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 вы имеете в виду мою переменную «вариант»? Если это так, это строковая переменная. –

Смежные вопросы