2017-01-11 3 views
-2

Я пытаюсь зашифровать сообщение и после того, как зашифровано письмо, зашифрованный банк букв смещается из метода 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

Ну, я вижу 'for loop', так что это может быть причиной, в зависимости от вашего состояния. Используйте отладчик, чтобы узнать, что там происходит. Нам не хватает, чтобы воспроизвести это, вы можете написать [mcve] и ожидаемое поведение – AxelH

ответ

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 
} 
Смежные вопросы