Я пытаюсь эмулировать ротор машины загадки в Java.Мне нужен объект, который получает индекс, ключ и объект, потому что я безуспешно пробовал HashMaps следующим образом:
private HashMap<Integer,Integer> rotorWiring = new HashMap<Integer, Integer();
private HashMap<Integer,Integer> reverseRotorWiring = new HashMap<Integer, Integer>();
//The "wiring" of the rotor is set from a String,
public void setRotorWiring(String Wiring) {
if (Wiring.length()==26) {
for (int i=0; i<Wiring.length();i++ ) {
char tempChar = Wiring.charAt(i);
int valueOfChar = (int)tempChar-64;
if (valueOfChar<=26){
this.rotorWiring.put(i+1,valueOfChar);
this.reverseRotorWiring.put(valueOfChar,i+1);
}
}
}
}
Пока все хорошо, это позволяет мне переводить ex A в E, однако, как только я попытался смоделировать поворот ротора следующим образом:
//It should be mentioned that I designing the program to only accept characters a to z inclusive.
public void turn() {
for (int i=1;i<=rotorWiring.size();i++) {
if (i!=26) {
rotorWiring.replace(i, rotorWiring.get(i+1));
}
else {
rotorWiring.replace(i, rotorWiring.get(1));
}
}
for (int i=1;i<=rotorWiring.size();i++) {
if (i!=26) {
reverseRotorWiring.replace(i, rotorWiring.get(i+1));
}
}
}
Однако я заметил, что это скорее симулирует смещение внутренней проводки ротора, а не поворот ... Язапрашивать решения типа «Карта» с индексом, ключом и объектом, потому что это позволило бы мне сместить индекс всех ключей и объектов на 1, имитируя поворот.
Я, однако,Открыты для предложений по различным решениям этой проблемы.
Следует отметить, что я немного новичок, и поэтому ценю довольно подробные объяснения.
Большое спасибо.