2016-04-09 6 views
1

私はJavaプログラミングだけでなく、stackoverflowの新機能です。現在、配列polybiusSquareを使用して文字列を暗号化するプログラムを作成しました。文字の配列(Polybius Square)を使用して文字列を解読しようとしています

示すように、配列は次のとおり

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' } }; 

情報目的のための「ハロー」、これを使用して暗号化された場合、私は、文字列が「2215252532」であろうバック受信う。これは、2D配列の座標に基づいて行われています。

私は今、何とかして、配列に数字の文字列を渡すことによって文字列を通常の文字に戻すことができるようにする必要があります。

これを間違った場所に掲載したり不明な点があれば、何か助けていただければ幸いです。ただ復号化

答えて

1

は、結果文字列上で動作し、インデックスを抽出する意味:このサンプルコードは、簡潔のために、任意の入力検証が含まれていないことを

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(); 
} 

注意を。実際の解決策では、少し守りたいと思うかもしれません。

+0

こんにちはMureinik、あなたのコードをテストしようとすると、私はそれがintではないためにcrypt.lengthでエラーが発生しています。それはintであるべきか、何か間違っているのですか? – Kallendo96

+0

私はこれをもう少し調べてきました。私はこの行でArrayIndexOutOfBoundsExceptionを取得しているようです: 'plain.append(polybiusSquare [rowIndex] [colIndex]);' – Kallendo96

+0

また、メソッドは文字列を返す必要があると仮定していますか? – Kallendo96

関連する問題