我正在尝试创建一个列表并将我的书籍数组输出到其中,并让用户能够单击其中一本书来租用它。该列表有效,它输出所有书籍,但是当我单击一本书并选择“确定”时,它会给出错误“线程“main”java.lang.ClassCastException 中的异常:书籍无法转换为 java.lang.String”。有人可以向我解释这个错误是什么以及如何修复它吗?
public static void CustomerBooks() throws IOException {
Object[] Menu = {
"Option1",
"Option2",
"Option3",
"Option4"
};
String userChoice = (String) JOptionPane.showInputDialog(null, "Welcome", "Book Menu", JOptionPane.QUESTION_MESSAGE, null, Menu, null);
if (userChoice.equals("Option1")) {} else if (userChoice.equals("Option2")) {
File myFile = new File("books.txt");
Scanner inputFile = new Scanner(myFile);
Books[] bookArray = new Books[200];
String str;
while (inputFile.hasNext()) {
str = inputFile.nextLine();
String[] myData = str.split("#");
Books.addBook(bookArray, Books.getBookCount(), myData[0], myData[1], myData[2]);
}
inputFile.close();
String userChoice1 = (String) JOptionPane.showInputDialog(null, "Books List", "Books", JOptionPane.QUESTION_MESSAGE, null, bookArray, null);
JOptionPane.showMessageDialog(null, "You chose: " + userChoice1); {
System.exit(0);
}
}
最佳答案
java中有一个toString()
方法,可以在任何对象上调用。但是,如果您想根据您的 Book
的特征获得此方法的适当行为,您应该像 Ibukun 的答案一样重写它。
强制转换概念用于获取更具体类型的对象。因此,由于这本书不是 String
的 instance
,因此您在运行时会得到 ClassCastException
。
关于JAVA "cannot be cast to java.lang.String",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437359/