为什么我的程序中出现空错误; Stringtokenizer到数组

时间:2016-02-12 00:28:57

标签: java 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 个答案:

答案 0 :(得分:2)

shadowing变量m。取代

String m[] = new String[numtokens];

m = new String[numTokens];

答案 1 :(得分:0)

我认为因为你是着色属性。你有一个名为m的数组,你在getSent中放入了令牌,但是显示是使用你没有添加任何内容的类中定义的m数组。

在显示中打印出m的大小,这将显示您没有向名为m的属性添加任何内容。