2013-09-13 3 views
0

Моя программа должна получать фразу от пользователя, а затем возвращает пользователю зашифрованный код по своему выбору (либо ROT13, либо ATBASH) введенной фразы. Мой код компилируется и все, и позволяет пользователю вводить требуемые материалы, но когда они вводят зашифрованную фразу, ничего не происходит ... как новый зашифрованный код не появляется, и я не знаю, что с ним не так! Пожалуйста, помогите! Спасибо!2D-массивы в Java-программе

import java.io.*; 

public class J4_1_EncryptionVer4 
{ 
    public static void main (String [] args) throws IOException 
    { 
    BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));//BufferedReader reads user input 

    //String array letterA[] is initialized 
    String [][] letterA = new String [][]{ 
    {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}, 
    {"N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M"}, 
    {"Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","J","I","H","G","F","E","D","C","B","A"}, 
    }; 

    System.out.println ("Enter '1' for ROT13 or '2' for ATBASH");//asks user to choose method 
    String numA = myInput.readLine();//reads user input and assigns it to string 
    int num = Integer.parseInt (numA);//converts string to integer 
    int a = 0;//int a is declared 

    if (num == 1){//if user enters 1 
      a = 1;//set a to 1 
    } 
    if (num == 2) {//end if//if user enters 2 
      a = 2;//set a to 2 
     }//end if 
    System.out.println (a); 
    System.out.println(num); 

    System.out.println ("Please enter a phrase: ");//asks user to enter phrase 
    String message = myInput.readLine();//reads user input and assigns it to string 

    int x = 0; //declares int var x 

    System.out.println ("Your Encrypted code is: ");//prints out scentence 


    while (x < message.length())//while loop will run while x is less that the phrase length   
    { 
     String text = message.toUpperCase();//converts user input to upper case 
     String letter = Character.toString(text.charAt(x));//extracts character from string and assigns it to another string letter 

     x++;//increments x by 1 each time 

     for(int i=0; i<letterA.length; i++)//for loop declares int i = 0, will run while i is less than the the length of the array letterA, and i will increment by 1 each time 
     { 
     if(letter.equals(letterA[a][i]))//if the letter is equal to letterA[i] 
     { 
      System.out.print (letterA[a][i]);//print out the corresponding letter 

      break;//breaks from loop 

     }//end if 

     else if (letter.equals(" "))//else id the letter is equal to a space 
     { 
      System.out.print(" ");//prints out space 
      break;//breaks from loop 
     }//end else if   
     }//end for loop 
    }//end while loop 
    }//end main 
}//end class 
+2

Я настоятельно рекомендую научиться используйте отладчик. –

ответ

2

Это не работает, потому что letterA.length является 3, так что ваш for цикл выполняется только через 3 итераций, вместо 26.

+0

В отличие от буквы A [0] .length, letterA [1] .length и letterA [2] .length, все из которых * являются * 26 –

+0

привет! спасибо за ответ ... но я немного смущен тем, что вы имеете в виду – user101

+0

@Maddie LetterA - это двумерный массив, у вас есть AZ в письме A [0] NM в буквах A [1] и ZA в письме A [2] , Таким образом, длина буквы A равна 3, но в вашем коде я думаю, что вы ожидаете, что это будет 26, это длина массивов ** второго размера ** –

0

Я думаю, вы должны изменить свой цикл для

for (int i= 0; i < letterA[0].length ; i++) { 
      if (letter.equals(letterA[0][i]) { 
       System.out.print(letterA[a][i]); 
       break;    
      } 
      else { 
       // .........,....... 
      } 
    } 

Сначала используйте первый массив в качестве основы. Сравните буквы тогда, если они равны, то получит индекс этого письма, которые будут использоваться при шифровании

Я использую кровавый телефон RYT теперь так я действительно не компилировать код

+0

Ой, что случилось с моим кодом – misserandety

+0

Thnks для редактирования – misserandety

+0

Спасибо за помощь – user101

Смежные вопросы