Как передать код опций в класс селектора с n опциями?JAVA

Программисты JAVA общаются здесь
Anonymous
Как передать код опций в класс селектора с n опциями?

Сообщение Anonymous »

Код: Выделить всё

package lanta.utils;

import java.util.HashMap;
import java.util.Scanner;

public class MenuConstructor {
public HashMap options;
public int option;
public MenuConstructor(String defaultOption,String... options) {
this.options = new HashMap();
this.options.put(0, defaultOption);
this.option = 1;
for (String option : options) {
this.options.put(this.option, option);
this.option++;
}
}
public MenuConstructor(HashMap options) {
this.options = options;
}

public int getOption(Scanner scanner) {
StringBuilder message = new StringBuilder();
message.append(0 + " - ").append(this.options.get(0));
for(int i = 1; i < this.options.size(); i++){
message.append(" | ").append(i).append(" - ").append(this.options.get(i));
}
System.out.println(message);
System.out.println("Select an option:");
String selection = scanner.nextLine().replaceAll("\\D.*", "");
try {
int selectedOption = Integer.parseInt(selection);
if(options.containsKey(selectedOption)) return selectedOption;
else {
System.out.println("Invalid option, defaulting to 0");
return 0;
}
} catch (NumberFormatException e) {
System.out.println("Invalid number format, defaulting to 0");
return 0;
}
}
}
Вот как код реализован в настоящее время, и вы должны вызвать .getOption(scanner); внутри переключателя, который содержит код для каждого параметра. Мой главный вопрос заключается в том, как я могу «перенести вариант переключателя в метод». Я подумал о нескольких вещах, например, об абстрактном методе, который вы переопределяете при вызове, но все еще есть проблема, заключающаяся в том, что это должен быть случай переключения...

Есть ли способ переопределить каждый параметр? Я смотрю на проблему неправильно?

Вернуться в «JAVA»