Java中使用do-while反转数组内每个数字时出现空指针异常求助
嘿,我来帮你排查下这个NullPointerException的问题,顺便把代码里的其他小问题也一起解决掉~
为什么会抛出NullPointerException?
你在revCalculator方法里一开始把reverse数组初始成了null,根本没给它分配实际的内存空间!就像你准备往一个还没制作出来的盒子里放东西,程序当然会报错啦。要知道,数组在Java里是对象,必须先通过new int[长度]来初始化它的内存,才能访问里面的元素。
还有这些小问题需要注意
- 你直接修改了原数组的元素
number[j] /= 10,虽然当前循环里能工作,但会把原数组的内容破坏掉,如果后续代码还要用到原数组的话就麻烦了,最好用临时变量存一下要反转的数字。 - 最后打印结果的时候,直接
System.out.print(result)会输出数组的内存地址(比如[I@xxxxxxx),而不是你想要的反转后的数字,得遍历数组逐个打印元素。
修正后的完整代码
Reverse类
public class Reverse { public int[] revCalculator(int[] number) { // 初始化reverse数组,长度和输入数组保持一致 int[] reverse = new int[number.length]; for (int j = 0; j < number.length; j++) { // 用临时变量temp保存当前要反转的数字,避免修改原数组 int temp = number[j]; // 初始化当前元素的反转结果为0 reverse[j] = 0; do { reverse[j] = reverse[j] * 10 + temp % 10; temp /= 10; } while (temp > 0); } return reverse; } }
ShowReverse类
public class ShowReverse { public static void main(String[] args) { Reverse rev = new Reverse(); @SuppressWarnings("resource") Scanner in = new Scanner(System.in); System.out.println("Enter The Number Of Elements: "); int len = in.nextInt(); int[] numbers = new int[len]; for (int i = 0; i < len; i++) { System.out.println("Enter Number: "); numbers[i] = in.nextInt(); } int[] result = rev.revCalculator(numbers); System.out.println("THE REVERSE WOULD BE: "); // 遍历数组,逐个打印反转后的数字 for (int num : result) { System.out.print(num + " "); } } }
关键修正点总结
- 给
reverse数组分配了对应长度的内存,彻底解决NullPointerException。 - 使用临时变量
temp处理反转逻辑,保留原数组的原始数据。 - 遍历结果数组打印元素,确保输出的是你想要的反转数字。
内容的提问来源于stack exchange,提问作者Rojin
相关产品推荐
相关产品推荐

