2016-04-09 13 views
1

Java programlamasının yanı sıra stackoverflow uygulamasında yeniyim. Şu anda polybiusSquare dizisini kullanarak bir karakter dizesini şifreleyen bir program yaptım.Karakter dizisini kullanarak bir dizgenin şifresini çözmeye çalışmak (Polybius Square)

dizi olarak gösterilmektedir: bilgi amaçları için

static char polybiusSquare[][] = { { 'A', 'B', 'C', 'D', 'E', 'F' }, 
            { 'G', 'H', 'I', 'K', 'L', 'M' }, 
            { 'N', 'O', 'P', 'Q', 'R', 'S' }, 
            { 'T', 'U', 'V', 'W', 'X', 'Y' }, 
            { 'Z', 'E', 'T', 'A', 'O', 'N' }, 
            { 'E', 'T', 'A', 'O', 'N', 'M' } }; 

ise "Merhaba" şifrelenmiş "2215252532" olacağını dize geri alınan olur Bu kullanılmıştır. Bu, 2D dizisinin koordinatlarına dayanılarak yapılmıştır.

Şimdilik takılı kaldım, bir şekilde dizgileri diziye geçirerek dizgeyi tekrar normal karakterlere dönüştürmem gerekiyor.

Eğer yanlış yere gönderdiysem ya da belirsiz bir şey yapsaydım, özür dilerim.

cevap

1

sonucu sadece dize üzerinde çalışan ve endeksleri ayıklama vasıtası deşifre: Bu örnekte kod 'e bakacak olursak, bir giriş doğrulaması içermediğini

private static final char polybiusSquare[][] = { 
    { 'A', 'B', 'C', 'D', 'E', 'F' }, 
    { 'G', 'H', 'I', 'K', 'L', 'M' }, 
    { 'N', 'O', 'P', 'Q', 'R', 'S' }, 
    { 'T', 'U', 'V', 'W', 'X', 'Y' }, 
    { 'Z', 'E', 'T', 'A', 'O', 'N' }, 
    { 'E', 'T', 'A', 'O', 'N', 'M' } 
}; 

public static String decrypt (String crypt) { 
    int len = crypt.length(); 
    StringBuilder plain = new StringBuilder (len/2); 

    for (int i = 0; i < len; i += 2) { 
     int rowIndex = crypt.charAt(i) - '0' - 1; 
     int colIndex = crypt.charAt(i + 1) - '0' - 1; 
     plain.append(polybiusSquare[rowIndex][colIndex]); 
    } 

    return plain.toString(); 
} 

not edin. Gerçek bir çözümde, biraz daha savunmacı olmak isteyebilirsiniz.

+0

Merhaba Mureinik, kodunuzu test etmeye çalışırken, int olmadığı için crypt.length ile ilgili hatalar yaşıyorum. Bir int mi yoksa yanlış bir şey mi yapıyorum? – Kallendo96

+0

Buna biraz daha baktım. Bu satırda bir ArrayIndexOutOfBoundsException alıyorum görünüyor: 'plain.append (polybiusSquare [rowIndex] [colIndex]);' – Kallendo96

+0

Ayrıca, yöntemin bir dizge döndürmesi gerektiği varsayılıyor mu? – Kallendo96

İlgili konular