java.lang.NumberFormatException 错误及解决办法

 

如题:

inputNumber.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<html>
<head>
    <title>运算器</title>
</head>
<body>
<h3>输入运算数,选择运算符号:</h3>
<form action="" name="form" method="post">
    <input type="text" name="numberOne" size="6" />
    <Select name="operator">
        <option value="+" >+</option>
        <option value="-" >-</option>
        <option value="*" >*</option>
        <option value="/" >/</option>
    </Select>
    <%--Select下拉表单,option表示表中的元素--%>
    <input type="text" name="numberTwo" size="6" />
    <br>
    <input type="submit" value="Enter" name="submit">
</form>
<%
    String a = request.getParameter("numberOne");
    String b = request.getParameter("numberTwo");
    String operator = request.getParameter("operator");
    if(a==null||b==null){
        a="";
        b="";
    }
    if(a.length()>0&&b.length()>0){
%>
<computer:Computer numberOne="<%=a%>" numberTwo="<%=b%>" operator="<%=operator%>"/>
    计算结果:<%=a%><%=operator%><%=b%>=<%=result%>
<%
    }
%>
</body>
</html>

Computer.tag

<%@tag pageEncoding="UTF-8" %>
<%@attribute name="numberOne" required="true" %>
<%@attribute name="numberTwo" required="true" %>
<%@attribute name="operator" required="true" %>
<%@variable name-given="result" scope="AT_END" %>
<%
    try {
        double a = Double.parseDouble(numberOne);
        double b = Double.parseDouble(numberTwo);
        double r = 0;
        if (operator.equals("+")) {
            r = a + b;
        } else if (operator.equals("-")){
            r = a - b;
    }else if (operator.equals("*")){
            r=a*b;
    }else if (operator.equals("/")) {
            r = a / b;
    }
        jspContext.setAttribute("result",String.valueOf(r));
    }catch(Exception e){
        jspContext.setAttribute("result","发生异常:"+e);
    }
%>

编译运行输入1,1

会出现:

计算结果:ï¼+ï¼=发生异常:java.lang.NumberFormatException: For input string: "ï¼"

如上我们可以知道,这是一个数字格式异常

我们尝试使用trim()方法:

这个方法的作用是:去掉字符串两端多余的空格

double a = Double.parseDouble(numberOne.trim());
double b = Double.parseDouble(numberTwo.trim());

但是结果并没有解决问题。。。。

突然我注意到了一个问题,搜狗的拼音输入法输出的数字与英文输入法的字体并不一致,切换输入法后运行通过,没有出现异常。ps:本人用的是ubuntu16.04 64bit

结论:如果出现numberformatexception异常,不妨检查一下自己的输入法是否出错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值