2016-02-12 21 views
0

这实质上是一个小的代码,我正在写作练习,需要我使用StringTokenizer。我之前做过类似的程序,但现在当我将字符串存储在数组中并尝试打印它们时,它显示出空指针异常。任何帮助?为什么在我的程序中显示空错误; Stringtokenizer数组

import java.util.*; 
public class board1 
{ 
    String key; 
    String m[]; 

    //function to accept the sentence 
    void getsent() 
    { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter a sentence terminated by'.' or '?'"); 
     String take=in.nextLine(); 
     StringTokenizer taken=new StringTokenizer(take); 
     int numtokens=taken.countTokens(); 
     String m[]=new String[numtokens]; 
     for(int i=0;i<m.length;i++) 
     { 
      m[i]=taken.nextToken(); 
     } 
     for(int i=0;i<m.length;i++) 
     { 
      System.out.print(m[i]); 
     } 
    } 

    // function to display 
    void display() 
    { 
     System.out.println("The words seperately right now are:"); 
     for(int i=0;i<m.length;i++) 
     { 
      System.out.print(m[i]+"\t"); 
      System.out.println(); 
     } 
    } 

    // main to get functions 
    public static void main(String args[]) 
    { 
     board1 ob= new board1(); 
     ob.getsent(); 
     ob.display(); 
    } 
} 

回答

2

你是shadowing变量m。更换

String m[] = new String[numtokens]; 

m = new String[numTokens]; 
+0

谢谢!这帮助了我很多,并将帮助我参加即将到来的决赛! – Sree

0

我想是因为你的遮光性。您有一个名为m的数组,您将令牌放入getSent中,但显示使用的是未在其中添加任何内容的类中定义的m数组。

打印显示m的大小,这会告诉你,你没有添加任何东西到名为m的属性。

+0

Thankyou :)你们是最棒的! – Sree

相关问题