【发布时间】:2016-08-30 02:56:37
【问题描述】:
我是 Java 编程新手。而且我有点卡在方法中打印出数组。假设,我有
public class A{
private static String a;
private static char[] c;
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args){
word=sc.next();
char[] c = word.toCharArray();
System.out.println(c);
System.out.println(c.length)
printIt();
}
private static void printIt(){
System.out.println(c);
}
}
此示例无法编译并发出 NullPointerException。 但是对于给定的命令行输入,例如“test”。它确实打印出“test”和长度为“4”。但是当我尝试使用一种方法打印出数组时,它无法打印出来。
我知道数组正在初始化并填充字符,因为它正在打印 4。
谁能告诉我为什么它在 main 方法中起作用,为什么它在私有方法中不起作用?
【问题讨论】:
-
你永远不会初始化
private static char[] c,而是在main方法中创建一个新的局部变量。在main方法中从char[] c = word.toCharArray();中删除char[] -
@PrasadKharkar derp,原来如此。无视我。
-
@mikeTheLiar,即使我说对了一半,主方法中定义了一个局部变量:D
-
哦,
word尚未声明 -
... 如果您的程序无法编译,我不确定如何获得运行时异常 (NPE)。注意静态可变状态有一些大问题,应该尽量避免;如果您需要其他数据,则应将其作为参数传递。
标签: java arrays methods nullpointerexception