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

向方法传递ArrayList中的10个名称时出现Null Error,求解决方案

搞定你的Java空值问题~

首先得说,你提到要传递ArrayList,但实际代码里用的是String数组,而且你遇到的空值问题(应该是打印出一堆null)原因很明确,咱们一步步来梳理:

问题出在哪?

你在for循环的每一次迭代里,刚给数组的第i个位置赋值,就立刻调用arrayMethod打印整个数组。这时候数组里只有当前输入的那个元素有值,剩下的9个位置都是Java数组默认的null,所以打印的时候就会把这些null也输出出来,看起来就像是出现了空值错误。

解决思路&修正代码

方案1:继续用数组,调整方法调用时机

只需要把打印方法的调用移到循环外面,等10个名字全部输入完成后再打印整个数组就行:

import java.util.Scanner;

public class JavaApplication17 { 
    public static void main(String[] args) { 
        Scanner scan = new Scanner(System.in); 
        String [] names = new String[10]; 
        System.out.println("Enter 10 names: "); 
        for (int i = 0; i < 10; i++){ 
            names[i] = scan.nextLine(); 
            // 把方法调用从循环里移出去!
        }
        // 所有名字输入完再打印
        arrayMethod(names); 
    } 
    private static void arrayMethod(String arr[]) { 
        for (String a : arr) { 
            System.out.printf("%s ", a); // 加个空格,名字之间更清晰
        } 
    } 
}

方案2:换成你原本想使用的ArrayList

如果你的需求确实是用ArrayList而不是数组,那可以改成下面这样,ArrayList不会有默认空值的问题,而且长度是动态的:

import java.util.ArrayList;
import java.util.Scanner;

public class JavaApplication17 { 
    public static void main(String[] args) { 
        Scanner scan = new Scanner(System.in); 
        ArrayList<String> names = new ArrayList<>(); 
        System.out.println("Enter 10 names: "); 
        for (int i = 0; i < 10; i++){ 
            names.add(scan.nextLine()); 
        }
        arrayListMethod(names); 
    } 
    private static void arrayListMethod(ArrayList<String> nameList) { 
        for (String name : nameList) { 
            System.out.printf("%s ", name); 
        } 
    } 
}

额外小提示

Java里的引用类型数组(比如String数组)创建时,每个元素默认都是null,这就是你之前打印出一堆null的原因。而ArrayList是动态集合,只有你主动添加的元素才会存在,不会有默认的空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:16:48