我试图加密邮件,在加密一个字母后,加密的字母组从innerRotorClockWise方法转移。当我打电话给它时,我得到下面的输出。 (在这种情况下,消息只是一个字母)我试图在改变银行时回来。你们知道为什么会循环吗?
内部指数:20
内部指数:20 21
内部指数:20 21 22
内部指数:20 21 22 23
内部指数:20 21 22 23 24
内部指数:20 21 22 23 24 25
内部指数:20 21 22 23 24 25 26
当我没有调用我得到的方法时:
内部指数:20
for(int i = 0; i < encryptMessageArray.length; i++){
for(int j = 0; j < innerRotorClockWise.length; j++){
if(encryptMessageArray[i].equals(innerRotorClockWise[j])){
indexNumber = indexNumber + j + " ";
//encrypt the first letter
System.out.println("");
System.out.println("Inner Index Number: " + indexNumber);
System.out.println("");
innerRotorClockWise(); //change theencrypted letter bank
// repeat
这是innerRotorClockWise方法。
public void innerRotorClockWise(){
int lastIndex = innerRotorClockWise.length - 1;
String oldLast = innerRotorClockWise[lastIndex];
for (int i = lastIndex; i != 0; i--)
innerRotorClockWise[i] = innerRotorClockWise[i - 1];
innerRotorClockWise[0] = oldLast;
答案 0 :(得分:2)
如果我得到你想要做的事情,看来你应该在外部循环中调用innerRotorClockWise()
(在你加密当前字母之后)。另外,一旦找到匹配项,你应该从内循环中断开:
for(int i = 0; i < encryptMessageArray.length; i++) {
for(int j = 0; j < innerRotorClockWise.length; j++) {
if(encryptMessageArray[i].equals(innerRotorClockWise[j])) {
indexNumber = indexNumber + j + " ";
//encrypt the first letter
System.out.println("");
System.out.println("Inner Index Number: " + indexNumber);
System.out.println("");
break;
}
}
innerRotorClockWise(); //change theencrypted letter bank
// repeat
}