尝试反转整数的数字时出错

时间:2016-11-24 02:35:05

标签: java

我正在尝试将数字翻转为int个数字,但下面提供的代码会返回错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "[null, null, null]"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at Solution.reverseInteger(Solution.java:21)
    at Solution.main(Solution.java:30)

我知道应该有一个更简单的方法来解决这个问题,但我选择以我的方式做到这一点。我一直在谷歌搜索,但我找不到任何相关的解决方案来解决我的问题。 谁能帮我吗?谢谢!

import java.util.*;

class Solution {

    /*
     * param number: A 3-digit number.
     * return: Reversed number.
     */

    public int reverseInteger(int number) {
        // write your code here
        if (number > 1000 || number < 100) {
            return -1;
        }
        String s = Integer.toString(number);
        char[] c = s.toCharArray();
        String[] b = new String[c.length];

        for (int i = s.length() - 1, j = 0; i <= 0; i--, j++) {
            b[j] = String.valueOf(c[i]);
        }
        String h = Arrays.toString(b);
        int y = Integer.parseInt(h);
        return y;
    }

    public static void main(String[] args) {
        Solution p = new Solution();
        int ff = p.reverseInteger(102);
        System.out.println(ff);

    }
}

2 个答案:

答案 0 :(得分:2)

问题在于您的for循环。

for (int i = s.length()-1,j =0;i <=0; ...)

您将i的值设置为

int i = s.length()-1;

但你的for循环仅适用于i <=0,因此它永远不会进入

即使您拥有b数组,也不能将反转的数组字符串转换为int - 添加以下代码并查看。

    String h = Arrays.toString(b);
    System.out.println(h);

尝试迭代b字符串数组

答案 1 :(得分:2)

你实际上有两个问题。

  1. for循环中的条件不正确。您从s.length()-1开始并递减i,但您正在检查最初为i <= 0的{​​{1}},这意味着您的循环永远不会被执行。条件应为false
  2. 执行i >= 0时,int y = Integer.parseInt(h);实际上是数组的字符串表示形式,即h(在更正[2, 0, 1]循环之后)。有关更多详细信息,请参阅this related question
  3. 我建议删除for数组并改用StringBuilder(试图让它接近你自己的想法)。在这种情况下,你也可以摆脱其他一些部分。

    查看我的updated version

    String[]