我必須爲控制檯菜單應用程序實現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);
}
}
是否確定在您指定的線路發生錯誤,並且錯誤是什麼你展示? – dasblinkenlight
錯誤在行i =(整數)menu.execute(i);'。你應該強烈地重新考慮你的設計,這樣你就不會有原始的'Objects'這可能是兩種不同的實際類型之一... –