我的目的是获取用户键入的内容并将其存储在数组“info”中,然后将info [0]转换为大写。但是,当我编译我的代码时,我总是在“info [0] = info [0] .toUpperCase();”行中的主题“main”java.lang.NullPointerException中得到消息Exception。但我完全不知道导致这种异常的原因。如果有人能告诉我原因,那就太好了。谢谢!
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...
}
答案 0 :(得分:0)
当您尝试执行没有任何令牌的代码时,它会跳过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();
}