2014-01-15 2 views
1

저는 재미있는 캐릭터 작성자입니다. 또 다른 자바 문제가 발생했습니다! 내가 조금 주위에 인터넷 검색을 시도했지만 작동하는 해결책을 찾지 못하는 것 ... 어떤 클래스 (기사, 궁수, 마법사)에 따라 특정 정보를 출력하는 컴파일러에 대한 switch 문을 사용하려고합니다. 선택했지만 내 코드를 입력 할 때 내가 얻을 오류 메시지Java에서 Switch 문을 사용할 때 문제가 발생했습니다.

내 코드는 지금까지 (약간의 정리)입니다 : 내가 다른 클래스의 내부 클래스를 만들려고 할 것 같아요

String name; 
    String className; 
    int attPoints; 

    System.out.println("Welcome to 'GameName's' Character Creator 2.0!\n"); 
    Thread.sleep(500); 
    System.out.print("First off, what do you want your characters name to be? \n\nName : "); 
    name = Scan.nextLine(); 
    Thread.sleep(500); 
    System.out.print("\nYou are now to be known as "+ name + "!"); 

    System.out.print("\n\n" + name + ", what class do you want to be? "); 
    System.out.print("\n\nClasses available :\nKnight"); 
    Thread.sleep(1500); 
    System.out.print("\nMage"); 
    Thread.sleep(300); 
    System.out.print("\nDruid"); 
    Thread.sleep(300); 
    System.out.print("\nNinja"); 
    Thread.sleep(300); 
    System.out.print("\nArcher"); 
    Thread.sleep(300); 
    System.out.print("\nAdventurer"); 
    Thread.sleep(300); 
    System.out.print("\nBerserker"); 
    Thread.sleep(300); 

    System.out.print("\n\nClass : "); 
    className = Scan.next(); 

    Class userClass = Class.valueOf(className); 
    Thread.sleep(500); 
    System.out.println("\nCongratulations! Your class is now : "+ className + "!"); 
    Thread.sleep(500); 


     // This is where I get an error. 
     // - Syntax error, insert "enum Identifier" to complete EnumHeaderName  
     // - Syntax error, insert "EnumBody" to complete BlockStatement 
    // - Syntax error on token "void", @ expected 

    public void setClass() 
     switch (Class) { 

     case Knight: 
      System.out.println(" Various lore about knights "); 

      break; 

    } 
} 

-하지만 때 외부에 퍼팅을 시도했는데 다른 오류가 발생했습니다. 또한 attPoints라는 int가 있습니다. 클래스를 선택한 후 10을 더하고 싶지만 확실하지는 않습니다.

+0

이 java.lang''에 이름을 먼저 사용하지 않습니다를; 'CharacterClass' 또는 비슷한 것을 대신 사용하십시오. 아마 당신은'enum 클래스'를 사용하고 있으며 문제가있는 것처럼 보입니다. (1) enum에 대한 코드를 게시하십시오. (2) 컴파일러 오류는 * 오류가 발생한 * 위치를 지정합니다. 그 정보를 게시하십시오. – chrylis

+3

switch (userClass), not switch (Class) –

+0

By 덧붙여서 : Java에서는, enum 형은 풀 클래스입니다. 대신에'switch'를 사용하는 대신 일반적으로 enum에 메소드를 정의하고 각 값에 대한 구현을 제공해야합니다. – chrylis

답변

1

자바 유형 인 Class을 켜고 있습니다. 이 튜토리얼에서 살펴 보자 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

을 당신은 아마 같은 것을하고 싶지 : 자신의 유형에 대한

switch (userClass) { 
    case Class.KNIGHT: 
     System.out.println(" Various lore about knights "); 
     break; 
} 
+1

'Class'는 예약되어 있지 않으며,'class'는 예약되어 있습니다. – chrylis

+0

고쳐 주신 덕분에 –

+0

각 사례에 대해 EnumName.x를 쓰는 것을 피하기 위해 OP는 import static을 사용하여 enum의 모든 값을 가져 와서 switch (x)를 사용할 수 있습니다. – gsndev

관련 문제