Integer.parseInt("-1000");
返回-1000作为输出。
Integer.parseInt("+500");
抛出异常。
我如何才能识别前面带有“+”符号的正数 无需修剪符号?
答案 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'
)表示正值。
答案 4 :(得分:0)
public static int parseInt(String s)抛出NumberFormatException
将字符串参数解析为带符号的十进制整数。字符串中的字符必须全部为十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')以指示负值。返回结果整数值,就像将参数和基数10作为parseInt(java.lang.String,int)方法的参数给出一样。
答案 5 :(得分:0)
实现已从java 6更改为7. Intger.parseInt(“+ 500”)用于Exception直到java 6,但与java 7完全兼容