2014-01-15 4 views
1

Я создаю создателя персонажа для удовольствия, и, похоже, я столкнулся с еще одной проблемой Java! Я попытался немного поработать, но я, похоже, не нашел рабочего решения ... Я пытаюсь использовать оператор switch для компилятора для вывода определенной информации в зависимости от того, какой класс (Knight, Archer, Mage) пользователь выбрал, но при вводе моего кода я получаю сообщение об ошибкеПроблемы с использованием инструкции Switch в Java

Мой код до сих пор (очищено немного) является:

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; 

    } 
} 

Я думаю, что я, возможно, пытается создать класс внутри другого класса - но когда Я попытался поместить его за пределы, получив еще одну ошибку ... Кроме того, у меня есть int, называемый attPoints, и после того, как я выбираю класс, я хочу добавить к нему 10, но не знаю, как это сделать.

+0

Во-первых, никогда не используйте имена в 'java.lang' для собственных типов; используйте 'CharacterClass' или что-то подобное вместо этого. Предположительно, вы используете 'enum Class', и похоже, что проблемы есть. (1) Отправьте код для перечисления. (2) Ошибки компилятора указывают * где * происходят ошибки. Отправьте эту информацию. – chrylis

+3

switch (userClass), а не переключатель (класс) –

+0

Кстати: в Java типы перечислений представляют собой полные классы. Вместо использования 'switch' вы обычно должны определять методы перечисления и предоставлять реализации для каждого значения. – chrylis

ответ

1

Вы используете Class который является Java-кодом. Взгляните на этот учебник: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Вы, вероятно, хотите сделать что-то вроде:

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

'Класс' не зарезервирован,' класс' есть. – chrylis

+0

Исправлено, спасибо –

+0

Также, чтобы избежать записи EnumName.x для каждого случая, OP может использовать импорт static, чтобы получить все значения перечисления, чтобы можно было использовать переключатель (x). – gsndev

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