Java:无法将String转换为long

时间:2016-02-20 13:30:18

标签: java

我在将String解析为long时遇到问题。有问题的字符串是一个以空格开头的数字。例如:“35”。

NetBeans抛出此错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "  35"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:578)
at java.lang.Long.parseLong(Long.java:631)
at Sis1.main(Sis1.java:75)
/Users/michaeladrian39/Library/Caches/NetBeans/8.1/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

我想解析字符串“35”而没有空格。如何解决此错误?

4 个答案:

答案 0 :(得分:3)

您想要解析字符串“35”但尝试解析具有额外空格的字符串“35”。通过调用(例如)trim()

删除它
Integer.parseInt(str.trim())

答案 1 :(得分:0)

问题是35之前的空间。删除空格,一切都应该有用。

答案 2 :(得分:0)

String as = "6767";
      long vb = Long.valueOf(as).longValue();
      System.out.println(vb);

希望我的代码有所帮助。快乐的编码

答案 3 :(得分:0)

Long.parseLong(String s,int radix)文档声明字符串's'不应包含非digi字符,这是javadoc的摘录。

  

如果有任何类型,则抛出NumberFormatException类型的异常   发生以下情况:

     
      
  • 第一个参数为null或是一个长度为零的字符串。

  •   
  • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX。

  •   
  • 字符串的任何字符都不是指定基数的数字,除了第一个字符可能是减号' - '('\ u002d')或   加号'+'('\ u002B'),条件是字符串长于
      长度1.

  •   
  • 字符串表示的值不是long类型的值。

  •   

示例:

 parseLong("0", 10) returns 0L
 parseLong("473", 10) returns 473L
 parseLong("+42", 10) returns 42L
 parseLong("-0", 10) returns 0L
 parseLong("-FF", 16) returns -255L
 parseLong("1100110", 2) returns 102L
 parseLong("99", 8) throws a NumberFormatException
 parseLong("Hazelnut", 10) throws a NumberFormatException
 parseLong("Hazelnut", 36) returns 1356099454469L

String.trim()应该适合你(正如AlexR所说)。