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

时间:2012-05-21 13:10:59

标签: java

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

Integer.parseInt("+500");抛出异常。

我如何才能识别前面带有“+”符号的正数 无需修剪符号?

6 个答案:

答案 0 :(得分:10)

尝试使用模式"+#;-#"的{​​{3}}。它将处理显式签名解析。模式细分:

  • 第一部分(在;之前)是积极模式,它必须以+字符
  • 开头
  • 第二部分是否定的,必须以- char
  • 开头

示例:

DecimalFormat df = new DecimalFormat("+#;-#");
System.out.println(df.parse("+500"));
System.out.println(df.parse("-500"));

输出:

500
-500

答案 1 :(得分:7)

一种选择是使用Java 7 ...假设行为as documented

  

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

看起来这是Java 7中引入的新功能。 JDK 6文档仅表示已处理-

答案 2 :(得分:6)

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

  

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

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

if (s.charAt(0) == '+') s = s.substring(1);
int val= Integer.parseInt(s);

答案 3 :(得分:1)

我使用的是Java 7,Integer.parseInt("+500");没有抛出任何异常。

  

字符串中的字符必须都是十进制数字,第一个除外       字符可以是ASCII减号'-''\u002D')以表示负值       或ASCII加号'+''\u002B')表示正值。

Java 7 documentation for Integer.parseInt(String)

答案 4 :(得分:0)

  

public static int parseInt(String s)抛出NumberFormatException

     

将字符串参数解析为带符号的十进制整数。字符串中的字符必须全部为十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')以指示负值。返回结果整数值,就像将参数和基数10作为parseInt(java.lang.String,int)方法的参数给出一样。

Javadoc

答案 5 :(得分:0)

实现已从java 6更改为7. Intger.parseInt(“+ 500”)用于Exception直到java 6,但与java 7完全兼容