【问题标题】:NullPointerException on an array of strings字符串数组上的 NullPointerException
【发布时间】:2017-04-23 10:24:50
【问题描述】:

我的目的是获取用户输入的内容并将它们存储在数组“info”中,然后将 info[0] 转换为大写。但是,当我编译我的代码时,我总是在“info[0]=info[0].toUpperCase();”行的线程“main”java.lang.NullPointerException 中收到消息异常。但我完全不知道是什么导致了这个异常。如果有人能告诉我原因,那就太好了。谢谢!

        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...

        }

【问题讨论】:

  • 如果一开始按回车,输入为空。除此之外,代码运行良好。

标签: arrays string nullpointerexception


【解决方案1】:

当你尝试在没有任何标记的情况下执行代码时,它会跳过 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();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多