Java项目案例分析 第五章 学生成绩管理系统
发表在Java图书答疑
2015-01-20
是否精华
是
否
版块置顶:
是
否
设置时间:
非永久
永久
起始时间:
结束时间:
是否扣分:
是
否
第五章 学生成绩管理系统
期中 书本第207页 第7小节
对学生数据进行存盘的操作
报错
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
应该是
float grade;
grade = Float.parseFloat(String.valueOf(jTable2.getValueAt(i, 4)));
object[i].setGrade(grade);
部分有误 请问如何修改
期中 书本第207页 第7小节
对学生数据进行存盘的操作
报错
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
应该是
float grade;
grade = Float.parseFloat(String.valueOf(jTable2.getValueAt(i, 4)));
object[i].setGrade(grade);
部分有误 请问如何修改
精彩评论 14
2015-01-20
板凳
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1011)
at java.lang.Float.parseFloat(Float.java:452)
at appstu.view.JF_view_gradesub.jBsave_actionPerformed(JF_view_gradesub.java:249)
at appstu.view.JF_view_gradesub_jBsave_actionAdapter.actionPerformed(JF_view_gradesub.java:412)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1011)
at java.lang.Float.parseFloat(Float.java:452)
at appstu.view.JF_view_gradesub.jBsave_actionPerformed(JF_view_gradesub.java:249)
at appstu.view.JF_view_gradesub_jBsave_actionAdapter.actionPerformed(JF_view_gradesub.java:412)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
2015-01-21
5L
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
JF_view_gradesub这个类调用jBsave_actionPerformed()方法对学生考试成绩存盘的时候,有空白的内容,所以会抛出这个异常。
这个程序没有优化好,录入学生成绩的时候,需要把学生编号、学生姓名、考试类别三个栏位全部填满,否则就会抛出这个异常。
[/FIELDSET]
回复:
填满之后还出现了
错误信息为:违反了 PRIMARY KEY 约束 'PK_tb_gradeinfo_sub'。不能在对象 'dbo.tb_gradeinfo_sub' 中插入重复键。错误
JF_view_gradesub这个类调用jBsave_actionPerformed()方法对学生考试成绩存盘的时候,有空白的内容,所以会抛出这个异常。
这个程序没有优化好,录入学生成绩的时候,需要把学生编号、学生姓名、考试类别三个栏位全部填满,否则就会抛出这个异常。
[/FIELDSET]
回复:
填满之后还出现了
错误信息为:违反了 PRIMARY KEY 约束 'PK_tb_gradeinfo_sub'。不能在对象 'dbo.tb_gradeinfo_sub' 中插入重复键。错误
2015-01-22
8L
我们研究了一下,其实这个问题并不是代码的bug,而是Java的JTable组件功能不健全造成的。我们向表格输入信息之后,要把焦点,也就是光标离开这个单元格,这时候用getValueAt()才能取到我们输入的值。如果我们输入完成绩之后直接点存库按钮,虽然最后一个一门课程我们填了成绩,但是焦点没有离开,取到的值就是空字符串,转成数字类型就会抛出上述异常。
我们可以采用这种方法解决此问题:
在JF_view_gradesub.java类中的JBsave_actionPerformed()方法第一行添加这样一句话:
JBsave_actionPerformed(ActionEvent e){
jTable2.editCellAt(0,0); //当点击存库按钮时,将成绩表中的编辑焦点指向第一个单元格
...... //此处省略其他源代码
}
之前回复“把学生编号、学生姓名、考试类别三个栏位全部填满”不是解决此问题的关键,在此表示歉意。
我们可以采用这种方法解决此问题:
在JF_view_gradesub.java类中的JBsave_actionPerformed()方法第一行添加这样一句话:
JBsave_actionPerformed(ActionEvent e){
jTable2.editCellAt(0,0); //当点击存库按钮时,将成绩表中的编辑焦点指向第一个单元格
...... //此处省略其他源代码
}
之前回复“把学生编号、学生姓名、考试类别三个栏位全部填满”不是解决此问题的关键,在此表示歉意。
2015-01-22
9L
[FIELDSET][LEGEND]引自:8楼[/LEGEND]
我们研究了一下,其实这个问题并不是代码的bug,而是Java的JTable组件功能不健全造成的。我们向表格输入信息之后,要把焦点,也就是光标离开这个单元格,这时候用getValueAt()才能取到我们输入的值。如果我们输入完成绩之后直接点存库按钮,虽然最后一个一门课程我们填了成绩,但是焦点没有离开,取到的值就是空字符串,转成数字类型就会抛出上述异常。
我们可以采用这种方法解决此问题:
在JF_view_gradesub.java类中的JBsave_actionPerformed()方法第一行添加这样一句话:
JBsave_actionPerformed(ActionEvent e){
jTable2.editCellAt(0,0); //当点击存库按钮时,将成绩表中的编辑焦点指向第一个单元格
...... //此处省略其他源代码
}
之前回复“把学生编号、学生姓名、考试类别三个栏位全部填满”不是解决此问题的关键,在此表示歉意。
[/FIELDSET]
回复:
出现错误
错误信息为:违反了 PRIMARY KEY 约束 'PK_tb_gradeinfo_sub'。不能在对象 'dbo.tb_gradeinfo_sub' 中插入重复键。
我们研究了一下,其实这个问题并不是代码的bug,而是Java的JTable组件功能不健全造成的。我们向表格输入信息之后,要把焦点,也就是光标离开这个单元格,这时候用getValueAt()才能取到我们输入的值。如果我们输入完成绩之后直接点存库按钮,虽然最后一个一门课程我们填了成绩,但是焦点没有离开,取到的值就是空字符串,转成数字类型就会抛出上述异常。
我们可以采用这种方法解决此问题:
在JF_view_gradesub.java类中的JBsave_actionPerformed()方法第一行添加这样一句话:
JBsave_actionPerformed(ActionEvent e){
jTable2.editCellAt(0,0); //当点击存库按钮时,将成绩表中的编辑焦点指向第一个单元格
...... //此处省略其他源代码
}
之前回复“把学生编号、学生姓名、考试类别三个栏位全部填满”不是解决此问题的关键,在此表示歉意。
[/FIELDSET]
回复:
出现错误
错误信息为:违反了 PRIMARY KEY 约束 'PK_tb_gradeinfo_sub'。不能在对象 'dbo.tb_gradeinfo_sub' 中插入重复键。