2017-04-23 45 views
0

我的目的是获取用户输入的内容并将它们存储在数组“info”中,然后将info [0]转换为大写。但是,当我编译我的代码时,我总是在线“info [0] = info [0] .toUpperCase();”的线程“main”java.lang.NullPointerException中收到异常消息。但我完全不知道是什么原因造成这种异常。如果任何人都可以告诉我原因,那会很好。谢谢!字符串数组上的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... 

     } 
+0

如果您在开头按Enter键,输入将为空。除此之外,代码运行良好。 – shourav

回答

0

当您尝试没有任何标记来执行代码,这将跳过for循环,并尝试执行

info[0].toUpperCase(); 

但由于for循环已经跳过信息对象初始化空值。

因此,试图访问它会给你一个空指针异常。

只需在for循环中移动转换即可避免这种情况。

for(int i=0; tokens.hasMoreTokens(); i++){ 
     info[i] = tokens.nextToken(); 
     //converts only when value exists 
     info[i]=info[i].toUpperCase(); 
    }