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