Arrays 字符串数组上的NullPointerException
我的目的是获取用户键入的内容并将其存储在数组“info”中,然后将info[0]转换为大写。但是,在编译代码时,我总是在线程“main”java.lang.NullPointerException的“info[0]=info[0].toUpperCase();”行中得到消息Exception。但我完全不知道是什么导致了这个例外。如果有人能告诉我原因,那就太好了。谢谢大家!Arrays 字符串数组上的NullPointerException,arrays,string,nullpointerexception,Arrays,String,Nullpointerexception,我的目的是获取用户键入的内容并将其存储在数组“info”中,然后将info[0]转换为大写。但是,在编译代码时,我总是在线程“main”java.lang.NullPointerException的“info[0]=info[0].toUpperCase();”行中得到消息Exception。但我完全不知道是什么导致了这个例外。如果有人能告诉我原因,那就太好了。谢谢大家! public static void main(String[] args) {
public static void main(String[] args)
{
Scanner userScan = new Scanner(System.in);
String keyboard = userScan.nextLine();
StringTokenizer tokens = new StringTokenizer(keyboard, " ");
String[] info= new String[4];
for(int i=0; tokens.hasMoreTokens(); i++)
{
info[i] = tokens.nextToken();
}
info[0]=info[0].toUpperCase();
//other codes...
}
当您尝试在没有任何标记的情况下执行代码时,它将跳过for循环,并尝试执行
info[0].toUpperCase();
但由于for循环已被跳过,因此info对象被初始化为null
因此,尝试访问它会给您一个空指针异常
只需将转换移动到for循环中,即可避免这种情况
for(int i=0; tokens.hasMoreTokens(); i++){
info[i] = tokens.nextToken();
//converts only when value exists
info[i]=info[i].toUpperCase();
}
如果在开始时按enter键,输入将为空。除此之外,代码运行良好。