字符串数组的NullPointerException

时间:2017-04-23 10:24:51

标签: arrays string nullpointerexception

我的目的是获取用户键入的内容并将其存储在数组“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...

        }

1 个答案:

答案 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();
    }