9

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

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

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

4

6 回答 6

9

尝试DecimalFormat喜欢与模式"+#;-#"。它将处理显式签名解析。模式分解:

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

例子:

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

输出:

500
-500
于 2012-05-21T13:17:07.240 回答
7

一种选择是使用 Java 7... 假设其行为与记录的一样:

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

看起来这是 Java 7 中引入的一个新特性。JDK 6文档仅表明已-处理。

于 2012-05-21T13:13:04.170 回答
5

该方法的行为如文档中所述:

字符串中的字符必须都是十进制数字,除了第一个字符可以是 ASCII 减号“-”(“\u002D”)表示负值。

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

if (s.charAt(0) == '+') s = s.substring(1);
int val= Integer.parseInt(s);
于 2012-05-21T13:13:35.363 回答
1

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

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

Integer.parseInt(String) 的 Java 7 文档

于 2012-05-21T13:15:35.057 回答
0

公共静态 int parseInt(String s) 抛出 NumberFormatException

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

Javadoc

于 2012-05-21T13:14:57.790 回答
0

实现从 java 6 到 7

于 2016-02-19T16:07:39.617 回答