如果我这为什么会继续打印

时间:2017-01-11 11:29:20

标签: java arrays

我试图加密邮件,在加密一个字母后,加密的字母组从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;

1 个答案:

答案 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
}