br=new BufferedReader(new InputStreamReader(System.in));
       st=new StringTokenizer(br.readLine());
       for(int i =0;i<st.countTokens();i++)
       {  
       x[i]=Integer.parseInt(st.nextToken());
          System.out.print(x[i]+" ");
                }
为什么会抛出java.lang.NullPointerException在标记处。

解决方案 »

  1.   

    st.nextToken());  空撒。。
      

  2.   

    这还不简单,令牌指针处没有字符串。
    不过用token像是C++的写法,java一般不用token。
      

  3.   

    x[i]有创建吗,他的长度应该是st.countTokens() 
      

  4.   

    会不会是楼主输入错误了,源码在windows2003 jdk1.5.0_06下调试成功。
    源码如下:
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.*;public class test {
    public void test1(){
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    StringTokenizer st;
    try {
    st = new StringTokenizer(br.readLine());
    int x[] = new int[100];
    for(int i =0;i <st.countTokens();i++) 
    {  
    x[i]=Integer.parseInt(st.nextToken()); 
    System.out.print(x[i]+" "); 

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } /**
     * @param args
     */
    public static void main(String[] args) {
    test t = new test();
    t.test1();
            }
    }
    输入 "123 456 789"
    输出 "123 456"输入 "123"
    输出 "123"
      

  5.   

    在parseInt前面先输出st.netToken()的值看看。