爪哇语;无法强制转换为java.lang.String;
我正在尝试创建一个列表,并将我的书籍数组输出到该列表中,让用户能够单击其中一本书来租用它。该列表工作并输出所有书籍,但当我单击一本书并选择OK时,它会显示错误“线程中的异常”main“java.lang.ClassCastException:书籍无法转换为java.lang.String”。有人能给我解释一下这个错误是什么,以及我如何修复它吗爪哇语;无法强制转换为java.lang.String;,java,Java,我正在尝试创建一个列表,并将我的书籍数组输出到该列表中,让用户能够单击其中一本书来租用它。该列表工作并输出所有书籍,但当我单击一本书并选择OK时,它会显示错误“线程中的异常”main“java.lang.ClassCastException:书籍无法转换为java.lang.String”。有人能给我解释一下这个错误是什么,以及我如何修复它吗 public static void CustomerBooks() throws IOException { Object[] Menu = {
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);
}
}
不确定到底是什么问题,你没有发布你的
书
课程。
通常,每个类都内置了一个toString()
函数,但这不一定适合您的类。
我建议重写书
类中的toString()
函数。
像这样的
@override
public String toString(){
// assign result to your intended string
return result;
}
不确定到底是什么问题,你没有发布你的
书
课程。
通常,每个类都内置了一个toString()
函数,但这不一定适合您的类。
我建议重写书
类中的toString()
函数。
像这样的
@override
public String toString(){
// assign result to your intended string
return result;
}
java中有一个toString()
方法,可以在任何对象上调用。但是,如果你想根据你的书
的特点得到这个方法的适当行为,你应该像在Ibukun的答案中那样覆盖它
铸造概念用于获得更具体类型的对象。因此,由于这本书不是字符串的实例,因此在运行时会得到ClassCastException
。java中有一个toString()
方法,可以在任何对象上调用。但是,如果你想根据你的书
的特点得到这个方法的适当行为,你应该像在Ibukun的答案中那样覆盖它
铸造概念用于获得更具体类型的对象。因此,由于这本书不是字符串的实例,因此在运行时会出现类异常
public static void main(String[] args) {
Book[] ani = new Book[]{new Book(), new Book()};
String usi = (String) JOptionPane.showInputDialog(null, "Books", "Books", JOptionPane.QUESTION_MESSAGE, null, ani, null);
}
不要忘记一件事,showInputDialog
的重载
从传入参数的数组返回choosen对象(这里是书籍
)
您当然希望从返回的对象中分配toString()
或getName()
解决方案
在这里,我再现了同样的行为
public static void main(String[] args) {
Book[] ani = new Book[]{new Book(), new Book()};
String usi = (String) JOptionPane.showInputDialog(null, "Books", "Books", JOptionPane.QUESTION_MESSAGE, null, ani, null);
}
不要忘记一件事,showInputDialog
的重载
从传入参数的数组返回choosen对象(这里是书籍
)
您当然希望从返回的对象中分配toString()
或getName()
解决方案
请花时间适当缩进代码,并删除多余的垂直空格。代码比目前需要的更难阅读。我还建议把它减少到一个新的水平。从根本上说,这听起来像是您试图将对Book
类型的对象的引用强制转换为String
,但这是行不通的。java.lang.ClassCastException:Books不能强制转换为java.lang.String
我假设此异常发生在代码的另一部分中。。。堆栈跟踪会有帮助。if(userChoice.equals(“Option1”){}否则如果(userChoice.equals(“Option2”){
只要删除第一个条件,它是多余的:if(userChoice.equals(“Option2”)){
。请花点时间适当缩进代码,并删除过多的垂直空白。代码比现在更难阅读。我还建议将其减少为。从根本上说,这听起来像是试图将对Book
类型的对象的引用转换为String
,这就是just不起作用。java.lang.ClassCastException:Books不能强制转换为java.lang.String
我假设此异常发生在代码的另一部分…堆栈跟踪会有所帮助。if(userChoice.equals(“Option1”){}else如果(userChoice.equals(“Option2”){
只需删除第一个条件,它是多余的:if(userChoice.equals(“Option2”){
。