You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用do-while反转数组内每个数字时出现空指针异常求助

嘿,我来帮你排查下这个NullPointerException的问题,顺便把代码里的其他小问题也一起解决掉~

为什么会抛出NullPointerException?

你在revCalculator方法里一开始把reverse数组初始成了null,根本没给它分配实际的内存空间!就像你准备往一个还没制作出来的盒子里放东西,程序当然会报错啦。要知道,数组在Java里是对象,必须先通过new int[长度]来初始化它的内存,才能访问里面的元素。

还有这些小问题需要注意

  1. 你直接修改了原数组的元素number[j] /= 10,虽然当前循环里能工作,但会把原数组的内容破坏掉,如果后续代码还要用到原数组的话就麻烦了,最好用临时变量存一下要反转的数字。
  2. 最后打印结果的时候,直接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:17:31