当尝试从组合框中添加年份时,此错误显示:
线程“AWT-EventQueue-0”中的异常java.lang.ClassCastException:java.lang.String无法强制转换为java.lang.Integer
在LibraryFrame $ addListener.actionPerformed(LibraryFrame.java:103)
程序突出显示'整数anInteger =(整数)已选中;'行问题?
class addListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object selected = yearCombo.getSelectedItem();
if(e.getSource() == button)
{
System.out.println("Add button clicked!");
String t = title.getText();
Integer anInteger = (Integer) selected;
int y = anInteger;
int q = Integer.parseInt(quantity.getText());
library.addItem(new LibraryItem(t,y,q));
library.printLibrary();
System.out.println("Thank You!");
}
}
}
下面是填充yearCombo的代码:
label1 = new JLabel("Year");
yearCombo = new JComboBox();
ArrayList<Integer> countYear = new ArrayList<Integer>();
for(int y=1800; y<=2014; y++)
{
countYear.add(y);
}
for(int x=0; x < countYear.size(); x++)
{
yearCombo.addItem((countYear.get(x) + " "));
}
更改
后出现数字格式异常的代码 Integer anInteger = (Integer) selected;
到
Integer anInteger = Integer.parseInt(selected.toString());
答案 0 :(得分:6)
变化
Integer anInteger = (Integer) selected;
到
Integer anInteger = Integer.parseInt(selected.toString());
如错误所示,String和integer是完全不同的类,
您无法将字符串转换为整数,因为您无法将电视用作汽车。
编辑:
NumberFormatException
表示对象selected
不是数字。如果你有一个像"hello"
这样的字符串,你期望它是一个整数?
答案 1 :(得分:1)
此:
yearCombo.addItem((countYear.get(x) + " "));
// ^--------------- not numeric
无论countYear.get(x)
给你什么,都会产生无法转换为数字的字符串。
你真的需要在那里添加那个空间吗?