报错:NumberFormatException: For input string

zermjinzhao 2014-05-08 03:43:45
如下代码:


public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
if (args.length<3){
System.out.println("Use command line:Java Test "+"N1 "+" op "+" N2");
System.exit(-1);
}
double n1 = Double.parseDouble(args[0]);
double n2 = Double.parseDouble(args[2]);
double d=0;
if (args[1].equals("+")){
d=n1+n2;
} else if (args[1].equals("-")){
d=n1-n2;
} else if (args[1].equals("*")){
d=n1*n2;
} else if (args[1].equals("/")){
d=n1/n2;
} else{
System.out.println("ERROR");
System.exit(-1);
}
System.out.println(d);
}
}

其中当我执行java Test之后,录入 1 + 2可以得出结果3,但是当我重新输入 java Test 1 * 2之后即报错。
我修改源码* 为x ,则没有这个问题,求解。
...全文
2540 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用 *的时候

我把args参数都给输出出来了

发现里面的信息包括我当前路径的文件信息

  • 打赏
  • 举报
回复
我用你的程序运行了一下 1 * 3 的时候 System.out.println(args[2]); 输出的结果是一个长字符串
zermjinzhao 2014-05-08
  • 打赏
  • 举报
回复
引用 9 楼 songbgi 的回复:
你把你命令执行的界面发上来
  • 打赏
  • 举报
回复
你把你命令执行的界面发上来
  • 打赏
  • 举报
回复
空格也打上去了么
tony4geek 2014-05-08
  • 打赏
  • 举报
回复
/**
     * Returns a new <code>double</code> initialized to the value
     * represented by the specified <code>String</code>, as performed
     * by the <code>valueOf</code> method of class
     * <code>Double</code>.
     *
     * @param      s   the string to be parsed.
     * @return the <code>double</code> value represented by the string
     *         argument.
     * @exception NumberFormatException if the string does not contain
     *            a parsable <code>double</code>.
     * @see        java.lang.Double#valueOf(String)
     * @since 1.2
     */
    public static double parseDouble(String s) throws NumberFormatException {
	return FloatingDecimal.readJavaFormatString(s).doubleValue();
    }
zermjinzhao 2014-05-08
  • 打赏
  • 举报
回复
引用 3 楼 sd4324530 的回复:
你可以在 double n1 = Double.parseDouble(args[0]); double n2 = Double.parseDouble(args[2]); 这2行之前加上几句 System.out.println(arg[0]); System.out.println(arg[2]); 看看出来的到底是什么,报错的意思是应该是这2个出现了非数字的内容
我又做了一些尝试,发现只要我在命令行输入 *符号就会报错,其他的符号都没有问题,我想知道为什么*这么特殊?
zermjinzhao 2014-05-08
  • 打赏
  • 举报
回复
引用 2 楼 songbgi 的回复:
你看看错误定位到哪行了 double n1 = Double.parseDouble(args[0]); double n2 = Double.parseDouble(args[2]); 估计八成在这两行出问题了
我又做了一些尝试,发现只要我在命令行输入 *符号就会报错,其他的符号都没有问题,我想知道为什么*这么特殊?
zermjinzhao 2014-05-08
  • 打赏
  • 举报
回复
不明白为什么只有 *这个符号不行,其他的都可以。
sd4324530 2014-05-08
  • 打赏
  • 举报
回复
你可以在 double n1 = Double.parseDouble(args[0]); double n2 = Double.parseDouble(args[2]); 这2行之前加上几句 System.out.println(arg[0]); System.out.println(arg[2]); 看看出来的到底是什么,报错的意思是应该是这2个出现了非数字的内容
  • 打赏
  • 举报
回复
你看看错误定位到哪行了 double n1 = Double.parseDouble(args[0]); double n2 = Double.parseDouble(args[2]); 估计八成在这两行出问题了
tony4geek 2014-05-08
  • 打赏
  • 举报
回复
调试吧。 string 转 number 出错了。不是数字。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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