我必须为控制台菜单应用程序实现一个接口 IExecutable。我正在实现的方法是:Object execute(Object o); 所以我显示菜单。我从控制台读取了一个可能是整数或字符串的菜单选项。在执行时我有这个错误: java.lang.String 不能转换为 java.lang.Integer 问题是哪种是进行这种转换的最佳方式。
控制台菜单.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;
}
主.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);
}
}