chapter1_13 StringBufferの使い方
今回はStringBufferを使って簡単な文字の暗号化を行うプログラムです。
サンプルプログラムです。コピーして使いたい方はこちらからどうぞ。
Rot13Input.java
001: import java.io.*; //入力を実行するので、入出力関係のクラスをインポートします。
002:
003: /**
004: * このプログラムはユーザがタイプしたテキスト行を読み、Rot13という簡単な操作を使って
005: * 暗号化し、その結果を表示します。
006: */
007: public class Rot13Input {
008: public static void main(String[] args) throws IOException{
009: //ユーザからのテキスト行を読むためにBufferedReaderを設定します。
010: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
011: for(;;){ //無限ループ
012: System.out.print("> "); //プロンプトを表示します。
013: String line = in.readLine(); //1行読みます。
014: if((line == null) || line.equals("quit")) //EOFあるいは"quit"の場合
015: break; //ループから抜け出します。
016: StringBuffer buf = new StringBuffer(line); //StringBufferを使います。
017: for(int i = 0; i < buf.length(); i++) //各文字に対して、
018: buf.setCharAt(i, rot13(buf.charAt(i))); //暗号化したものを保存
019: System.out.println(buf); //暗号化された行を表示します。
020: }
021: }
022:
023: /**
024: * このメソッドはRot13という暗号化を実行します。各文字を13個後の文字で置き換えます。
025: * Latinコードのアルファベットは26文字なので、このメソッドは符号化(暗号化)にも復号
026: * 化にも使えます。
027: */
028: public static char rot13(char c){
029: if((c >= 'A') && (c <= 'Z')){ //大文字の場合、
030: c += 13; //各文字を13個後の文字で置き換えます。
031: if(c > 'Z') c -= 26; //Zより大きくなったら、26だけ減算します。
032: }
033: if((c >= 'a') && (c <= 'z')){ //小文字についても同様です。
034: c += 13;
035: if(c > 'z') c -= 26;
036: }
037: return c; //変換後の文字列を返します。
038: }
039:
040: }
実行例は次のようになります。

今回のプログラムでは大文字と小文字のアルファベットしか処理はしません。記号や数字、漢字や仮名はそのまま表示されます。
プログラムの処理に関してはプログラム内のコメントで大丈夫だとおもいます。
分からないところがあればコメントにお願いします。
<APILInk>
「API:BufferdReader」
「API:InputStreamReader」
「API:StringBuffer」
サンプルプログラムです。コピーして使いたい方はこちらからどうぞ。
Rot13Input.java
001: import java.io.*; //入力を実行するので、入出力関係のクラスをインポートします。
002:
003: /**
004: * このプログラムはユーザがタイプしたテキスト行を読み、Rot13という簡単な操作を使って
005: * 暗号化し、その結果を表示します。
006: */
007: public class Rot13Input {
008: public static void main(String[] args) throws IOException{
009: //ユーザからのテキスト行を読むためにBufferedReaderを設定します。
010: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
011: for(;;){ //無限ループ
012: System.out.print("> "); //プロンプトを表示します。
013: String line = in.readLine(); //1行読みます。
014: if((line == null) || line.equals("quit")) //EOFあるいは"quit"の場合
015: break; //ループから抜け出します。
016: StringBuffer buf = new StringBuffer(line); //StringBufferを使います。
017: for(int i = 0; i < buf.length(); i++) //各文字に対して、
018: buf.setCharAt(i, rot13(buf.charAt(i))); //暗号化したものを保存
019: System.out.println(buf); //暗号化された行を表示します。
020: }
021: }
022:
023: /**
024: * このメソッドはRot13という暗号化を実行します。各文字を13個後の文字で置き換えます。
025: * Latinコードのアルファベットは26文字なので、このメソッドは符号化(暗号化)にも復号
026: * 化にも使えます。
027: */
028: public static char rot13(char c){
029: if((c >= 'A') && (c <= 'Z')){ //大文字の場合、
030: c += 13; //各文字を13個後の文字で置き換えます。
031: if(c > 'Z') c -= 26; //Zより大きくなったら、26だけ減算します。
032: }
033: if((c >= 'a') && (c <= 'z')){ //小文字についても同様です。
034: c += 13;
035: if(c > 'z') c -= 26;
036: }
037: return c; //変換後の文字列を返します。
038: }
039:
040: }
実行例は次のようになります。

今回のプログラムでは大文字と小文字のアルファベットしか処理はしません。記号や数字、漢字や仮名はそのまま表示されます。
プログラムの処理に関してはプログラム内のコメントで大丈夫だとおもいます。
分からないところがあればコメントにお願いします。
<APILInk>
「API:BufferdReader」
「API:InputStreamReader」
「API:StringBuffer」