整数正常,带小数就报错

AOT200 2014-05-02 03:22:15
报错的相关代码如下

for(HashMap map:nlist)
{
String proinfo = "";
int total=0;
for(String str:map.get("prosinfo").toString().split(","))
{
proinfo+=str.split("-")[0]+"  单价"+str.split("-")[1]+"  "+(str.split("-")[2].equals("")?"不打折":str.split("-")[2]+"折  ")+" 数量 "+str.split("-")[4]+"  "+"<br />";

int ft = 0;
ft=Integer.parseInt(str.split("-")[1])*Integer.parseInt(str.split("-")[4]);
if(!str.split("-")[2].equals(""))
{
ft = (Integer.parseInt(str.split("-")[2])*ft)/10;
}
total+=ft;
}
%>
<tr align="center">
<td align="center"> <%=map.get("toshop").equals("")?" ":map.get("toshop") %> </td>
<td align="center"> <%=proinfo %> </td>
<td align="center"> <%=total %> </td>
<td align="center"> <%=map.get("savetime").equals("")?" ":map.get("savetime") %> </td>
<td align="center"> <%=map.get("fkstatus").equals("")?" ":map.get("fkstatus") %> </td>
<td align="center"> <%=map.get("status").equals("")?" ":map.get("status") %> </td>

<td align="center"> <%=map.get("tinfo").equals("")?" ":map.get("tinfo") %> </td>

<td align="center">


<%if(map.get("status").equals("待受理") ){ %>
<a href="ordersb.jsp?scid=<%=map.get("id")%>">取消订单</a>
<%}else{ %>
 
<%} %>


<%if(map.get("fkstatus").equals("未付款") ){ %>
<a href="javascript:fk('<%=map.get("id") %>')">订单付款</a>
<%}else{ %>
 
<%} %>


<%if( map.get("fkstatus").equals("已退款")){ %>


<a href="javascript:fk('<%=map.get("id") %>')">订单付款</a>
<%}else{ %>
 
<%} %>



<%if(map.get("status").equals("订单已接受并已发货")){ %>


<a href="javascript:th('<%=map.get("id")%>')">申请退换货</a>  

<%}else{ %>
 
<%} %>



<%if(map.get("status").equals("退货已接受并已发货")||map.get("status").equals("订单已接受并已发货")||map.get("fkstatus").equals("已退款")){ %>


<a href="ordersb.jsp?qrid=<%=map.get("id")%>">确认收货</a>

<%}else{ %>
 
<%} %>

</td>

</tr>
<%} %>

相关数据库数据如下

prosinfo 的数据是 书名-价格-折扣-书的id-购买数量

比方数据的最后一个价格 如果是35这样的整数,就没有问题,如果像上面给了30.5,就会报错
java.lang.NumberFormatException: For input string: "30.5"

小弟现在是赶鸭子上架阶段,求指教要怎么修改。。。。
...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
-江沐风- 2014-05-02
  • 打赏
  • 举报
回复
ft = (Integer.parseInt(str.split("-")[2])*ft)/10;
parseInt只能转换成int类型的,如果要转换成float的,可以用Float类的方法; 把你的变量ft定义为float类型,然后:
ft = (Float.parseFloat(内容))
Gansuper7012 2014-05-02
  • 打赏
  • 举报
回复
java.lang.NumberFormatException数字格式化异常,就是你在讲String类型转换为Integer类型是抛出的,因为你传入的参数有带小数的,带小数的你可以调用double d = Double.parseDouble(String s)方法。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧