#前書き
Javaで練習してみる。 FizzBuzzができればどんどん実践にという人もいるが
他にないかと思い提案します。
#javaの要素
・ファイル入出力
・ループ
・Javaが用意してくれているメソッドを使用
発展としてメソッド化してパラメータを変更できるようにする。
入力ファイルをもっと複雑にするなどが考えられる。
#前提知識 シーザー暗号
シーザー暗号を使う。以下Wikipediaによる説明
シーザー暗号は単一換字式暗号の一種であり、平文の各文字を辞書順で3文字分シフトして(ずらして)暗号文とする暗号である。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた。
#前提知識 アルファベットからアスキーコードへの変換
char c = 'A';
int code = c;
System.out.println(code);
結果が 65
#前提知識 ファイル 読み込み
https://www.javadrive.jp/start/stream/index1.html
#試作 その1
AをBにしてみる。
char c = 'A';
int code = c;
int temp = code + 1;
char b = (char) (temp);
System.out.println((char) (temp));
結果が B
#試作 その2
ABC を BCD にする
char c = 'A';
int code = c;
int temp = code + 1;
char b = (char) (temp);
System.out.println((char) (temp));
結果が BCD
#試作 その3
文字列 Hello goodbyeを 辞書順で3文字分シフトしたのち
もう一度 復元する。
String temp = "Hello goodbye";
char[] c = temp.toCharArray();
for (char ch: c) {
char b = (char) ((ch) +3);
System.out.print(b);
}
結果が Khoor#jrrge|h
String temp = "Khoor#jrrge|h";
char[] c = temp.toCharArray();
for (char ch: c) {
char b = (char) ((ch) -3);
System.out.print(b);
}
結果がHello goodbye
#本番
##仕様
・ファイルから文字列を読み込むこと
・暗号文を復元すること 今回はシーザー暗号からの復元なので 辞書順で3文字分シフト
してあるものを復元するとする。
##実装例
test.txt
Khoor#jrrge|h
public static void main(String[] args) {
try{
File file = new File("/Users/gina/Documents/gina
work/New/src/test/test.txt");
FileReader filereader = new FileReader(file);
int ch;
while((ch = filereader.read()) != -1){
System.out.print((char)(ch -3));
}
filereader.close();
}catch(FileNotFoundException e){
System.out.println(e);
}catch(IOException e){
System.out.println(e);
}
}
}
結果がHello goodbye