前提・実現したいこと
ここに質問の内容を詳しく書いてください。
processingで暗号化システムを作っています。
暗号化 機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ StringIndexOutOfBoundsException : String index out of range: 4
該当のソースコード
ソースコード String encrypt(String message, int ekey) { String alphabet="abcdefghijklmnopqrstuvwxyz"; String encrypted = ""; for (int i=0; i < message.length(); i++) { char ch = message.charAt(i); int pos = alphabet.indexOf(ch); if (pos == -1) { encrypted = encrypted + ch; } else { ch = message.charAt(pos + ekey); encrypted = encrypted + ch; System.out.println(encrypted); } } return encrypted; } void setup() { size(100, 100); String text="abcd"; String etext = encrypt(text, 2);//String etext = encrypt(text, 0); println(etext); }
試したこと
ここに問題に対して試したことを記載してください。
System.out.println(encrypted);で確認しましたが、aの文字が消えていて何がどうなっているのか分かりません。
char ch = message.charAt(i);//1文字ずつ取ってくる。
int pos = alphabet.indexOf(ch);//posにchを代入して値を返す。
if(pos == -1)//判定なし。
else//判定あり
ch = message.charAt(pos + ekey);//()は"0(a)" + "2"
encrypted = encrypted + ch;//chをencryptedに代入。
String etext = encrypt(text, 2);//textの2文字目から始める。
補足情報(FW/ツールのバージョンなど)
processing3
バージョン3.5.4
ここにより詳細な情報を記載してください。
先程までエラーが起きず実行できていたのですが、何か消したか、追加したかでエラーが起きたんだと思います。
bcdaにするにはどう加えたらいいでしょうか。