Java中的Integer.parseint,首先是'+'时的异常

Ach*_*les 9 java

Integer.parseInt("-1000"); 返回-1000作为输出.

Integer.parseInt("+500"); 抛出一个例外.

如何在它们之前用"+"符号识别正数而不必修剪符号?

dac*_*cwe 10

尝试DecimalFormat使用模式"+#;-#".它将处理显式签名解析.模式细分:

  • 第一部分(之前;)是正面模式,它必须以+char 开头
  • 第二部分是否定的,必须以-char 开头

例:

DecimalFormat df = new DecimalFormat("+#;-#");
System.out.println(df.parse("+500"));
System.out.println(df.parse("-500"));
Run Code Online (Sandbox Code Playgroud)

输出:

500
-500
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 7

一种选择是使用Java 7 ...假设行为符合记录:

将字符串参数解析为带符号的十进制整数.字符串中的字符必须都是十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')表示负值或ASCII加号'+'('\ u002B')表示正值.

看起来这是Java 7中引入的新功能.在JDK 6文档只能说明-进行处理.


das*_*ght 6

该方法的行为与文档中描述的相同:

字符串中的字符必须全部为十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')以指示负值.

如果+要正确执行解析,则需要跳过第一个字符:

if (s.charAt(0) == '+') s = s.substring(1);
int val= Integer.parseInt(s);
Run Code Online (Sandbox Code Playgroud)

  • OP说*"无需修剪符号?"* (2认同)