【发布时间】:2014-12-20 11:41:21
【问题描述】:
我正在尝试从 JTable 中检索一个值并收到 java.lang.nullpointer 异常。以下行似乎是问题所在。我试图让它获取对象,即 25,并基本上将其转换为 int。由于某种原因,这个简单的任务似乎极其困难或不可能。我查看了另一个存在类似问题的 StackOverflow 用户问题,但他从未得到有效的回复。
错误代码如下: 线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 Gradebook$5.actionPerformed(Gradebook.java:925)这是循环中的第二行。
注意:我编辑了这篇文章以提供额外的代码。
for(int i = 0; i < 10; i++){
myClass[currentClass].getCategoryElement(i).setName((String)categoriesTable.getModel().getValueAt(i, 1));
myClass[currentClass].getCategoryElement(i).setWeight(Integer.valueOf((String)(categoriesTable.getModel().getValueAt(i, 2))));//THIS LINE IS THE IDENTIFIED PROBLEM
}
categoriesTable.setModel(new DefaultTableModel(
new Object[][] {
{"1", "Classwork", "20"},
{"2", "Homework", "20"},
{"3", "Tests", "20"},
{"4", "Quizzes", "20"},
{"5", "Projects", "20"},
{"6", null, null},
{"7", null, null},
{"8", null, null},
{"9", null, null},
{"10", null, null},
},
【问题讨论】:
-
"NullPointerException" 表示这 5 个对象之一为空。如果没有更多代码,我们无法猜测是哪个。
-
1.
NOTE: I EDITED THIS POST TO PROVIDE ADDITIONAL CODE.== 为了更好地帮助 soner 发布 SSCCE/MCVE ,简短,可运行,可编译,2. 搜索 `getColumnClass 以避免强制转换 -
分离你的语句(而不是一个长的方法链)并进行空检查,因为你确实有空值?为什么要将整数值存储为字符串?只需将它们保存为整数。如果这是数字数据,不是更有意义吗?
-
如果我进行空检查,那么您建议我将什么作为 int 值存储在对象中?而且,据我了解,JTable 中的整数值自动成为对象,这些对象不能直接转换/转换为 int ......它们必须首先转换/转换为 String。
-
@Daron:首先:使用类 java.lang.Integer。那是一个表示整数的对象。第二:抛出异常的行可能有 5 个不同的值为 null。因此,将此行拆分为多个较小的指令;将结果存储在传递给下一个变量的变量中。 IE。而不是
foo.getBar().setBaz(),而是Bar bar = foo.getBar(); bar.setBaz();
标签: java swing casting jtable int