已有101人关注
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);
部分有误 请问如何修改
分享到:
精彩评论 14
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-01-20
沙发
这个异常是说将字符串转换成数字发生异常,字符串不是有效数字内容,字符串是空的。
我没有在找到你发的这行代码在哪里,请发一下具体的异常日志。
350784690
学分:0 LV1
TA的每日心情
学习学习
2020-03-19 19:15:40
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)
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-01-21
地板
JF_view_gradesub这个类调用jBsave_actionPerformed()方法对学生考试成绩存盘的时候,有空白的内容,所以会抛出这个异常。
这个程序没有优化好,录入学生成绩的时候,需要把学生编号、学生姓名、考试类别三个栏位全部填满,否则就会抛出这个异常。
350784690
学分:0 LV1
TA的每日心情
学习学习
2020-03-19 19:15:40
2015-01-21
4L
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
JF_view_gradesub这个类调用jBsave_actionPerformed()方法对学生考试成绩存盘的时候,有空白的内容,所以会抛出这个异常。
这个程序没有优化好,录入学生成绩的时候,需要把学生编号、学生姓名、考试类别三个栏位全部填满,否则就会抛出这个异常。
[/FIELDSET]

回复:
有没有解决办法 
350784690
学分:0 LV1
TA的每日心情
学习学习
2020-03-19 19:15:40
2015-01-21
5L
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
JF_view_gradesub这个类调用jBsave_actionPerformed()方法对学生考试成绩存盘的时候,有空白的内容,所以会抛出这个异常。
这个程序没有优化好,录入学生成绩的时候,需要把学生编号、学生姓名、考试类别三个栏位全部填满,否则就会抛出这个异常。
[/FIELDSET]

回复:
  

填满之后还出现了
错误信息为:违反了 PRIMARY KEY 约束 'PK_tb_gradeinfo_sub'。不能在对象 'dbo.tb_gradeinfo_sub' 中插入重复键。错误
学分: LV1
TA的每日心情
开心
2021-10-26 19:13:33
2015-01-21
6L
你在插入记录的时候,把学生编号换成表中没有的编号再试试。
350784690
学分:0 LV1
TA的每日心情
学习学习
2020-03-19 19:15:40
2015-01-21
7L
[FIELDSET][LEGEND]引自:6楼[/LEGEND]
你在插入记录的时候,把学生编号换成表中没有的编号再试试。
[/FIELDSET]

回复:
  还是不行
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-01-22
8L
我们研究了一下,其实这个问题并不是代码的bug,而是Java的JTable组件功能不健全造成的。我们向表格输入信息之后,要把焦点,也就是光标离开这个单元格,这时候用getValueAt()才能取到我们输入的值。如果我们输入完成绩之后直接点存库按钮,虽然最后一个一门课程我们填了成绩,但是焦点没有离开,取到的值就是空字符串,转成数字类型就会抛出上述异常。

我们可以采用这种方法解决此问题:
在JF_view_gradesub.java类中的JBsave_actionPerformed()方法第一行添加这样一句话:
JBsave_actionPerformed(ActionEvent e){
 jTable2.editCellAt(0,0); //当点击存库按钮时,将成绩表中的编辑焦点指向第一个单元格
 ......  //此处省略其他源代码
}


之前回复“把学生编号、学生姓名、考试类别三个栏位全部填满”不是解决此问题的关键,在此表示歉意。
350784690
学分:0 LV1
TA的每日心情
学习学习
2020-03-19 19:15:40
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' 中插入重复键。
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-01-22
10L
主键冲突。
tb_gradeinfo_sub表中是联合主键,不能插入与旧数据学生编号、考试类别编号、考试科目编号三个都相同的数据。
你换一些数据试试。
首页上一页 12 下一页尾页 14 条记录 1/2页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照