我想简单地将10个名字传递给arraylist中的方法,但我得到了一个null错误。有什么想法吗?
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);
}
}
}
答案 0 :(得分:1)
在读取数组的一个元素之后,你试图打印所有这些元素(一个字符串数组被初始化为一个空数组,我猜)并且将null格式化为字符串可能会引发异常?
答案 1 :(得分:0)
其他一切都很好。你只需要在for循环之外进行方法调用:
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);
}
当方法调用在循环中时,调用该方法,并在数组中仍有未初始化的值时迭代整个List。从for循环中取出方法调用解决了这个问题。
答案 2 :(得分:0)
初始化具有大小的数组时,未分配的索引将包含String的默认值 null 。然后你尝试在每次输入后打印整个数组,这将打印输入值,并为数组的其余部分输出 null 。
如果您需要一次打印所有内容,只需将arrayMethod(names)
移出循环,如下所示:
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);
}
如果您需要在输入后打印名称,请按如下所示更改代码:
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[i]);
}
}
private static void arrayMethod(String name)
{
System.out.println(name);
}