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

Spinner选择后点击Button程序崩溃问题排查(附完整代码)

Android程序点击按钮崩溃问题分析与修复

你的程序点击按钮后直接退出,核心原因是触发了空指针异常(NullPointerException),咱们拆解问题并修复:

问题1:未初始化数组就直接访问

看你按钮点击事件里这段代码:

int array1[] = null;
for (int i = 0; i<numnum; i++){
    array1[i]=((int)(Math.random()));
    // ...
}

这里array1被赋值为null,相当于根本没创建数组对象就直接去访问下标i,JVM必然会抛出异常导致程序崩溃。

问题2:文本显示的两个小bug

  • 每次循环调用setText会覆盖之前的内容,最终TextView只会显示最后一个随机数;
  • 你写的换行符是/n,这是错误的,Android里换行必须用\n。

修复后的完整按钮点击逻辑

把按钮点击事件的代码改成这样:

button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // 先判断数值是否合法,避免创建长度为0的数组
        if (numnum <= 0) {
            text1.setText("请选择有效的数值");
            return;
        }
        int array1[] = new int[numnum]; // 初始化数组,分配对应大小的内存
        StringBuilder resultBuilder = new StringBuilder(); // 用StringBuilder拼接文本更高效
        for (int i = 0; i < numnum; i++){
            // 修正随机数生成:Math.random()返回0-1的double,转int会变成0,这里改成0-99的随机数示例
            array1[i] = (int)(Math.random() * 100);
            resultBuilder.append("num #").append(i+1).append(": ").append(array1[i]).append("\n");
        }
        text1.setText(resultBuilder.toString()); // 一次性把所有内容设置到TextView
    }
});

额外补充说明

  • 原来的Math.random()直接转int会一直得到0,因为它返回的是[0.0,1.0)区间的数值,转int会截断小数部分,我改成了Math.random() * 100生成0-99的随机数,你可以根据需求调整范围;
  • 新增了numnum <=0的判断,防止Spinner未选中有效数值时出现异常。

内容的提问来源于stack exchange,提问作者dayday

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:43:38