Java 意外的toString结果

Java 意外的toString结果,java,Java,因此,我将值添加到哈希映射中,然后打印出哈希映射。我的哈希映射值似乎打印得很好,但由于某些原因,打印的键与输入的键不一样。 以下是相关代码: //adds values into the hash map public void addTransition(int curState, char curBit, int newState, char newBit, int direction){ Trigger trigger = new Trigger(newState, newBit);

因此,我将值添加到哈希映射中,然后打印出哈希映射。我的哈希映射值似乎打印得很好,但由于某些原因,打印的键与输入的键不一样。 以下是相关代码:

//adds values into the hash map
public void addTransition(int curState, char curBit, int newState, char newBit, int direction){
   Trigger trigger = new Trigger(newState, newBit);
   Action action = new Action(newState, newBit, direction);
   program.put(trigger,action);
   System.out.println(program);
}
编辑:更新触发器类

//the trigger class
class Trigger{
    public char curBit;
    public int curState;
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + getOuterType().hashCode();
        result = prime * result + curBit;
        result = prime * result + curState;
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Trigger other = (Trigger) obj;
        if (!getOuterType().equals(other.getOuterType()))
            return false;
        if (curBit != other.curBit)
            return false;
        if (curState != other.curState)
            return false;
        return true;
    }
    private TuringMachine getOuterType() {
        return TuringMachine.this;
    }
    public Trigger(int x, char y){
        curState = x;
        curBit = y;
    }
    @Override
    public String toString(){
        return "|" + curState + ", " + curBit + "|";
    }
}
例如,如果我执行
addTransition(0,'1',0,'1',1)
,它将打印出
{(0,49)=(0,1,1)}

编辑:因此,对于上面的一个,它将按预期打印出
(0,1)=(0,1,1)
但是,如果我在添加上一个
0,1,0,1,1,1
之后添加了转换(0,0,1,1) 它给了我:
{0,1 |=(0,1,1),|1,0 |=(1,0,1)}
您正在将
字符
传递到一个构造函数中,该构造函数接受
int
,并隐式转换


'1'
的字符代码是
49

您正在将
char
传递到一个构造函数中,该构造函数接受
int
并隐式转换


'1'
的字符代码是
49

是什么使它认为它与HashMap有关?在你责怪HashMap之前,你有没有试着直接打印出你的
触发器
操作
?是什么让它认为它与HashMap有关?在你责怪HashMap之前,你有没有试着直接打印出你的
触发器
操作
?只适用于第一次添加转换,如果我做另一次添加转换,它会再次出错这是另一个问题,这次是
触发器=新触发器(newState,newBit)
你可能应该通过
curState
curBit
。是的,我甚至没有注意到。现在可以用了,谢谢。我的大脑只在第一次添加转换时工作,如果我再做一次添加转换,它会再次出错这是另一个问题,这次是
Trigger Trigger=new Trigger(newState,newBit)
你可能应该通过
curState
curBit
。是的,我甚至没有注意到。现在可以用了,谢谢。我的脑子死了