【问题标题】:Converting a string array to a large number array将字符串数组转换为大数数组
【发布时间】:2013-03-14 19:26:30
【问题描述】:

所以,在 Java 中,我在命令参数中有一个很大的数字,比如说 12345678910,我不能使用 bigInteger,我已经这样做了:

String[] g = args[1].split("");

所以,我的字符串被放入一个字符串数组中。但是,我不能使用:

int[] ginormintOne = new int[g.length];
   for(int n = 0; n < g.length; n++) {
      ginormintOne[n] = Integer.parseInt(g[n]);
   }

它给了我这个:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at Ginormint.main(Ginormint.java:67)

我认为我的数字对于 int 来说太大了。关于如何将其转换为大数数组的任何想法?

【问题讨论】:

  • 有什么理由不使用java.lang.Long 吗?它是 64 位签名的
  • 假设有人输入了一个任意大的数字,占用超过 64 位。那我该怎么做呢?
  • BigDecimal * 10^x(科学记数法)
  • 如果没有BigInteger 或任何其他具有相同功能的类,您将无法做到这一点。

标签: java arrays string int largenumber


【解决方案1】:

您正在拆分一个空字符串。例如,

"123 456".split("")

这个数组的结果:

["" "1" "2" "3" " " "4" "5" "6"]

这就是你的异常的来源。

【讨论】:

    【解决方案2】:

    args[1].split("") 中数组的第一个元素是一个空字符串,我认为它会导致异常 java.lang.NumberFormatException,因为它无法转换为 Integer

    【讨论】:

      【解决方案3】:

      使用Long.parseLong 代替Integer.parseIntlong[] 代替Long.parseLong

      但话虽如此,NumberFormatException 表示失败是因为您传递给它的是一个空字符串。你确定你正确地分割了字符串,或者分割是必要的吗? main 中的 args 数组已经按空格分割,假设这是 args 的来源。

      【讨论】:

        猜你喜欢
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多