コンソール メニュー アプリケーション用にインターフェイス IExecutable を実装する必要があります。実装しているメソッドは次のとおりです。Object execute(Object o); だから私はメニューを表示します。コンソールから、整数または文字列のメニュー オプションを読み取りました。実行時に次のエラーが発生しました: java.lang.String を java.lang.Integer にキャストできません 。問題は、その変換を行う最善の方法はどれかということです。
ConsoleMenu.java
public Object execute(Object o) {
show();
o = read();
try{
int choice = Integer.parseInt((String) o); // error on this line
IExecutable menuOption = getMenuOptions(choice);
if(menuOption != null){
o = menuOption.execute(o);
return o;
}
} catch(Exception e){
System.out.println("Invalid option"+ e.getMessage());
}
return null;
}
private static IExecutable getMenuOptions(int i){
for(MenuOptions option : options){
if(option.getKey() == i && option.getIsActive()){
return option;
}
}
return null;
}
public static Object read(){
String option = null;
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
try {
option = buffer.readLine();
return option;
}
catch (IOException e) {
System.out.println("IOException " +e.getMessage());
}
return null;
}
Main.java
public class Main {
public static void main(String[] args) {
Integer i = new Integer(1);
ConsoleMenu menu = new ConsoleMenu("MATH OPERATIONS");
menu.addMenuOption(new SubOption());
menu.addMenuOption(new AddOption());
i = (Integer) menu.execute(i);
}
}