Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 字符串数组上的NullPointerException_Arrays_String_Nullpointerexception - Fatal编程技术网

Arrays 字符串数组上的NullPointerException

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) {

我的目的是获取用户键入的内容并将其存储在数组“info”中,然后将info[0]转换为大写。但是,在编译代码时,我总是在线程“main”java.lang.NullPointerException的“info[0]=info[0].toUpperCase();”行中得到消息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...

        }

当您尝试在没有任何标记的情况下执行代码时,它将跳过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键,输入将为空。除此之外,代码运行良好。