【问题标题】:Why do I get a NumberFormatException when I convert this为什么我在转换这个时会得到一个 NumberFormatException
【发布时间】:2015-07-25 19:05:57
【问题描述】:
long converted = Long.valueOf(input);

输入是一个String 对象。

我想将数字的字符串值转换成long

我假设要转换一个字符串对象,我需要使用.valueOf来返回一个Long对象。

是因为我将结果存储在原始变量中吗?

感谢您的帮助。

【问题讨论】:

  • 您收到此异常是因为输入不是有效的长整数。
  • 输入包含什么?异常的确切信息是什么?
  • 尝试在输入中打印字符串。看看它是否是一个有效的数字

标签: java


【解决方案1】:

学习使用JavaDoc

public static Long valueOf(String s) throws NumberFormatException

返回一个 Long 对象,该对象包含指定的 String 的值。该参数被解释为表示带符号的十进制long,就像将该参数提供给parseLong(java.lang.String) 方法一样。结果是一个Long 对象,它表示字符串指定的整数值。 换句话说,此方法返回一个Long 对象,其值等于:

new Long(Long.parseLong(s))

参数: s - 要解析的字符串。

返回: 一个 Long 对象,包含由字符串参数表示的值。

抛出: NumberFormatException - 如果字符串无法解析为long

【讨论】:

    【解决方案2】:

    如果您没有提供有效的 long 作为输入,则会引发 NumberFormatException。见下文:

      long converted = Long.valueOf( "3" );
      System.out.println( converted );
    

    打印3

    try{
        long converted = Long.valueOf( "TEST" );
        System.out.println( converted );
    }
    catch( NumberFormatException e ){
        System.out.println( "Your input is wrong.." );
    }
    

    这会抛出 NumberFormatException,这是因为不是一个有效的数字。并打印出 "Your input is wrong.."

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2015-03-17
      相关资源
      最近更新 更多