Comment définir la valeur d'un enum par la saisie de l'utilisateur

Je suis de la tentative de créer une méthode qui me permette de renvoyer la valeur de l'enum définies par les utilisateurs de l'entrée. Je decalred un enum, alors j'essaie de régler les enum par les utilisateurs à l'entrée. Je ne peux pas utiliser mon GetPlayerClass méthode pour renvoyer la valeur de Player_Class. Quelqu'un peut-il me dire si c'est la bonne façon d'utiliser un enum pour définir une valeur ou est-il une manière que je peux permettre à l'utilisateur de sélectionner à partir de l'énumération de la liste et permettez-moi de sortir de leur choix.

Mon code est ci-dessous.

TLDR:
Je suis "enum " stupide" et ne peuvent pas comprendre comment définir la valeur d'une variable à partir d'un enum et puis renvoyer cette valeur plus tard. S'il vous plaît consulter mon code et laissez-moi savoir ce que je fais de mal.

  //The PCs base class
    private enum Base_Class {
        Barbarian, Bard, Cleric, Druid, Fighter, Monk, 
        Paladin, Ranger, Rogue, Sorcerer, Wizard
    };


 //Setting the base class
 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 {
                Base_Class_Choice = user_input.nextInt();
                switch(Base_Class_Choice) {
                    case 1:
                        Base_Class Player_Class;
                        Player_Class = Base_Class.Barbarian;
                        break;
                    case 2:
                        break;
                    default:
                        break;
                }
            } catch (Exception e) {
                System.out.println("You must choose a valid class. Try numbers.");
                user_input.next();
            }
        } while (Base_Class_Choice == 0);
    }

    /**
     * Return my players class
     * @return
     */
    public String getPlayerClass() {
        return Player_Class;
    }

J'ai mis à jour le code ci-dessous
J'essaie maintenant d'ressemble.

    try {
                Base_Class_Choice = user_input.nextInt();
                Base_Class Player_Class = Base_Class.values()[Base_Class_Choice - 1];
            } catch (Exception e) {
                System.out.println("You must choose a valid class. Try numbers.");
                user_input.next();
            }

Mais le retour de la Base_Class Player_Class ne fonctionne pas.

    public String getPlayerClass() {
        return Player_Class;
    }

Quand j'essaie de revenir Player_Class il échoue avec l'erreur impossible de trouver le symbole.
Que pourrais-je encore fait de mal?

Mise à JOUR!!!! "TOUT LE CODE!!!"

/*
* 
* 
*/
package rpgmanager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
*
* @author Aaron
*/
public class Character {
//The person playing the character
private String Player_Name;
//The PCs First Name
private String First_Name;
//The PCs Last Name
private String Last_Name;
//The PCs Race
private enum Race {
Dwarf, Halfling, Elf, Human, Gnome, HalfOrc, HalfElf
};
//The PCs base class
private enum Base_Class {
Barbarian, Bard, Cleric, Druid, Fighter, Monk, 
Paladin, Ranger, Rogue, Sorcerer, Wizard
};
private Base_Class Player_Class;
//Base Class Choice for switch case
private int Base_Class_Choice = 0;
//The PCs Height
private int Height = 0;
//The PCs Weight
private int Weight = 0;
//The PCs Age
private int Age = 0;
//The PCs base level
private int Base_Level;
//Sets up the scanner for inputs
Scanner user_input = new Scanner(System.in);
//Create a Buffered reader for input
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//This instantiates a new character
public Character() {
}
/**
* Sets the PCs first name
*/
public void setPlayerName() {
System.out.print("Players Name: ");
try {
Player_Name = reader.readLine(); 
} catch (IOException ioe) {
System.out.println("The Player Name input failed to set.");
System.out.println(ioe);
}
}
/**
* Sets the PCs first name
*/
public void setFirstName() {
System.out.print("First Name: ");
try {
First_Name = reader.readLine();
} catch (IOException ioe) {
System.out.println("The PCs First Name input failed to set.");
System.out.println(ioe);
}
}
/**
* Sets the PCs last name
*/
public void setLastName() {
System.out.print("Last Name: ");
try {
Last_Name = reader.readLine();
} catch (IOException ioe) {
System.out.println("The PCs Last Name input failed to set.");
System.out.println(ioe);
}
}
/**
* Sets the height of the PC
*/
public void setHeight() {
do {
System.out.print("Height (inches): ");
try {
Height = user_input.nextInt();
if(Height < 1) {
System.out.println("Not a valid number.");
}
} catch(Exception e) {
System.out.println("You must use a number greater than 0!");
user_input.next();
}
} while (Height < 1);
}
/**
* Sets the weight of the PC
*/
public void setWeight() {
do {
System.out.print("Weight (pounds): ");
try {
Weight = user_input.nextInt();
if (Weight < 1) {
System.out.println("Not a valid number.");
}
} catch (Exception e) {
System.out.println("You must use a number greater than 0!");
user_input.next();
}
} while (Weight < 1);
}
/**
* Sets the age of the PC
*/
public void setAge() {
do {
System.out.print("Age (whole years): ");
try {
Age = user_input.nextInt();
if (Age < 1) {
System.out.println("Not a valid number.");
}
} catch (Exception e) {
System.out.println("You must use a number greater than 0!");
user_input.next();
}
} while (Age < 1);
}
/**
* Sets the base level of the PC
*/
public void setBaseLevel() {
do {
System.out.print("Starting Level: ");
try {
Base_Level = user_input.nextInt();
if (Base_Level < 1 || Base_Level > 25) {
System.out.println("Not a valid number.");
}
} catch (Exception e) {
System.out.println("You must choose a valid level between 1 and 25!");
user_input.next();
}
} while (Base_Level < 1 || Base_Level > 25);
}
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 {
Base_Class_Choice = user_input.nextInt();
Base_Class Player_Class = Base_Class.values()[Base_Class_Choice - 1];
} catch (Exception e) {
System.out.println("You must choose a valid class. Try numbers.");
user_input.next();
}
} while (Base_Class_Choice == 0);
}
/**
* Gets the PCs first name
* @return 
*/
public String getFirstName() {
return First_Name;
}
/**
* Gets the PCs last name
* @return 
*/
public String getLastName() {
return Last_Name;
}
/**
* Gets the PCs height
* @return 
*/
public int getHeight() {
return Height;
}
/**
* Gets the PCs age
* @return 
*/
public int getAge() {
return Age;
}
/**
* Gets the PCs base level (1-25)
* @return
*/
public int getBaseLevel() {
return Base_Level;
}
/**
* Gets the PCs player name
* @return
*/
public String getPlayerName() {
return Player_Name;
}
/**
*
* @return
*/
public Base_Class getPlayerClass() {
return Player_Class;
}
/**
*  Creates a new character
*/
public void createCharacterNew() {
this.setPlayerName();
this.setFirstName();
this.setLastName();
this.setHeight();
this.setWeight();
this.setAge();
this.setBaseLevel();
this.setBaseClass();
}
}
  • Juste en regardant votre code, vous êtes déclarant Player_Class à l'intérieur d'un interrupteur, ce qui signifie que vous avez portée à l'interrupteur; cependant, vous essayez d'y accéder dans une fonction distincte qui ne fonctionnent pas car la variable n'est pas dans la portée.
  • Il suffit de mettre la classe de joueur en haut à l'extérieur de l'interrupteur. Merci!
  • Base_Class player = Base_Class.valueOf("Barbarian"); est possible aussi.
  • Mise à jour de question, comme il est toujours à la peine.
  • est Player_Class une variable de membre? (peut-être que vous pourriez inclure plus de code)
  • J'ai ajouté TOUT le code. Veuillez voir mon edit.
  • vous avez déclaré une variable locale nommée Player_Class et lui a attribué. si vous utilisez un IDE, s'il vous plaît activer toutes les mises en garde (comme "l'occultation variable membre").
  • J'ai juste apporté une réponse à clarifier de quoi je parlais.

InformationsquelleAutor ILikeTurtles | 2013-04-30