2013-05-07 13 views
0

스위치 케이스에서 enum을 사용하려고합니다. 어떤 이유로 스위치 케이스는 int를 찾으려고하지만 enum을 찾는 netbeans에 나와 있습니다. setStats()에서 스위치 케이스에 enum을 사용하면 어떻게 될까요? 나는 요청에 따라 자바 7switch 문에서 enum을 사용할 수 없습니다.

package rpgmanager; 

import java.util.Random; 

/** 
* 
* @author aaron 
*/ 
public class CharacterClass { 
    Random random = new Random(); 
    private int STR; 
    private int DEX; 
    private int CON; 
    private int WIS; 
    private int INT; 
    private int CHA; 
    private Enum SuperClass; 

    /** 
    * 
    */ 
    public CharacterClass(Enum Player_Class) { 
     SuperClass = Player_Class; 
     System.out.println("You are a handsome "+ Player_Class); 
     this.setStats(); 
    } 

    /* 
    * Sets the users stats 
    */ 
    private void setStats() { 
     STR = random.nextInt(6) + 5; 
     DEX = random.nextInt(6) + 5; 
     CON = random.nextInt(6) + 5; 
     WIS = random.nextInt(6) + 5; 
     INT = random.nextInt(6) + 5; 
     CHA = random.nextInt(6) + 5; 

     switch (SuperClass) { 
      case Barbarian: 
       break; 
      default: 
       throw new AssertionError(SuperClass.name()); 
     } 
    } 

내 ENUM 코드를 사용하고 -

private enum Base_Class { 
      Barbarian, Bard, Cleric, Druid, Fighter, Monk, 
      Paladin, Ranger, Rogue, Sorcerer, Wizard 
     }; 

    /* 
     * Sets the Base Class of the PC 
     */ 
     public void setBaseClass() { 
      do { 
       System.out.println("Available Classes: "); 
       System.out.println("Please select a cooresponding number for class."); 
       int i = 1; 
       for(Base_Class value: Base_Class.values()){ 
        System.out.println(i+": "+value.name()); 
        i++; 
       } 
       try { 
        System.out.print("Choice: "); 
        Base_Class_Choice = user_input.nextInt(); 
        Player_Class = Base_Class.values()[Base_Class_Choice - 1]; 
        try { 
         CharacterClass extendedClass = new CharacterClass(Player_Class); 
         extendedClass.getStatsList(); 
         Extended_Class = extendedClass; 
        } catch (Exception e) { 
         System.out.println("Failed to build the character class!"); 
        } 
        if (Base_Class_Choice < 1 || Base_Class_Choice > i) { 
         System.out.println("Not a valid number."); 
        } 
       } catch (Exception e) { 
        System.out.println("You must choose a valid class. Try numbers."); 
        user_input.next(); 
       } 
      } while (Base_Class_Choice == 0); 
     } 
+0

enum 클래스 코드를 게시 할 수 있습니까? – gwin003

+0

@ grin003 enum 클래스 코드를 추가합니다. – ILikeTurtles

+0

표준 Java 명명 규칙을 사용하십시오. 그렇지 않으면 코드에 대해 생각하기가 조금 더 어려워집니다. –

답변

5

당신은이 특정 열거 형뿐만 아니라 Enum을 사용해야합니다. 예를 들어, 당신은 할 수 있습니다

public enum PlayerClass { 
    WARRIOR, 
    BARBARIAN, 
    WIZARD; 
} 

public class GameCharacter { 

    private PlayerClass playerClass; 

    public GameCharacter(PlayerClass playerClass) { 
     this.playerClass = playerClass; 
    } 

    private void setStats() { 
     ... 
     switch (playerClass) { 
      case BARBARIAN: 
       ... 
     } 
    } 
} 

나는 강하게 조언 당신은 방법으로, 자바 명명 규칙을 따르는 것 - 그래서 당신의 변수 strength, dexterity 등보다는 STR 또는 DEX 이름을 지정합니다.

+0

나를 자바 명명 규칙에 연결할 수 있습니까? 나는 PHP에서 다시 온다. – ILikeTurtles

+0

@Aaron : http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html –

+1

을 참조하십시오. 링크가 표시된 책이 있습니다. 나는 그것을 연구하고 나의 코드를 리팩터링 할 것이다. 감사! – ILikeTurtles

관련 문제