Java DFA中我的状态的NullPointerException?

Java DFA中我的状态的NullPointerException?,java,nullpointerexception,dfa,Java,Nullpointerexception,Dfa,我不明白为什么我的代码中会出现NullPointerException。 我正在尝试为DFA编写模拟器,我已经创建了一个节点类型的类来保存我的状态,如下所示 import java.util.Map; class State{ //fields Map<String,State> nextStates; public State passChar(String putIn){ if(!nextStates.

我不明白为什么我的代码中会出现NullPointerException。 我正在尝试为DFA编写模拟器,我已经创建了一个节点类型的类来保存我的状态,如下所示

import java.util.Map;


class State{
        //fields
        Map<String,State> nextStates;

        public State passChar(String putIn){
            if(!nextStates.containsKey(putIn)){
                return null; 
            }
            return nextStates.get(putIn);
        }

        /**
         * Add a state that this state connects to.
         * @param sta the state that this state connects to when
         * a letter in the alphabet is passed to it.
         * @param pass the letter that is passed to it.
         */
        public void addNextState(String pass,State sta){
            nextStates.put(pass,sta);
        }
    }

您必须初始化
映射

Map<String,State> nextStates;
映射下一个状态;
你在哪里做?大概是这样的:

Map<String,State> nextStates = new HasMap <>();
Map nextStates=new HasMap();

这就是NullPointerException的原因。

您从未初始化过下一个状态,因此它为null。当您尝试访问其
.put
方法时,这行代码中的问题是:nextStates.put(pass,sta);因为nextStates尚未初始化。您应该添加
newhashmap()如下所示:Map nextStates=newhashmap();
Map<String,State> nextStates = new HasMap <>();