У меня проблема с перечислением. У меня есть класс Type
, в котором есть два перечисления: RIGHT
и LEFT
. В другом классе у меня есть объект класса Type
с именем value
. У меня петля:
if (currentLvl.verify(value)) {
totalPoint++;
}
Где currentLvl.verify(value)
- метод, проверяющий правильность значения. Моя проблема в том, как получить value
от пользователя. Я хочу, чтобы пользователь перед циклом if записал свое значение, а после этого, если value
верен, totalPoint++
. Я хочу использовать сканер, но не могу value = scanner.nextInt();
. Как я могу получить value
от пользователя и его значение, присвоенное переменной value
?
3 ответа
Похоже, вам нужно использовать метод valueOf()
для преобразования String в перечисление, примерно так:
Type value = Type.valueOf(scanner.next().toUpperCase());
Или, если пользователь вводит значение перечисления, используйте массив values()
Type value = Type.values()[scanner.nextInt()];
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a value: ");
String userInput = stdin.readLine();
System.out.println(userInput);
В классе перечисления:
public enum EType{
private String value;
LEFT("left"), RIGHT("right");
private EType(String value){
this.value = value;
}
public String getValue(){
return this.value;
}
}
ИЛИ ЖЕ:
public enum EType{
private int value;
LEFT(1), RIGHT(0);
private EType(int value){
this.value = value;
}
public int getValue(){
return this.value;
}
}
Сравнение значения перечисления и значения пользователя:
if(LEFT.getValue().equalsIgnoreCase(userInput)){
// do something
} else {
// do something
}
ИЛИ ЖЕ:
if(userInput == EType.LEFT.getValue()){
// do something
} else {
// do something
}
Мне потребовалась минута, чтобы понять, о чем вы говорите, но я думаю, что это то, что вы ищете:
public enum Type {
LEFT, RIGHT;
public static Type getTypeByOrdinal(int ordinal) {
for(Type t : Type.values()) {
if(t.ordinal() == ordinal) {
return t;
}
}
return null;
}
}
Теперь вы можете сканировать целыми числами:
Scanner sc = new Scanner(System.in);
int userInput = sc.nextInt(); // Assume userInput = 1
Type t1 = Type.getTypeByOrdinal(userInput);
System.out.println(t1); // => RIGHT
userInput = sc.nextInt(); // Assume userInput = 0
Type t2= Type.getTypeByOrdinal(userInput);
System.out.println(t2); // => LEFT
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].