gpt4 book ai didi

java - 意外的 toString 结果

转载 作者:行者123 更新时间:2023-12-01 18:15:29 24 4
gpt4 key购买 nike

所以我将值添加到 HashMap 中,然后打印出 HashMap 。我的 HashMap 值似乎打印得很好,但由于某种原因,我打印的键与我输入的键不同。相关代码如下:

//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 后执行 addTransition(0,'0',1,'0',1)它给了我:{|0, 1|=(0, 1, 1), |1, 0|=(1, 0, 1)}

最佳答案

您将一个 char 传递到一个采用 int 的构造函数,并且它正在被隐式转换。

'1' 的字符代码是 49

关于java - 意外的 toString 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com