ニートです1からプログラミングを教えてくれるat PROGニートです1からプログラミングを教えてくれる - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト833:t.mourning ◆HeJleJP5y2 16/03/13 00:22:17.64 .net ホワイトデーのお返し作ってて遅れた exam4から 問 シーザー暗号を解きなさい まず手で解いてみる 一文字ずつずらしていき中に「person」があれば答え プログラムで解釈する 1.文字列をn文字ずらす 2.中にpersonが含まれるか調べる 3.含まれていればそれを表示して終了、含まれていなければnに1足して1からやり直し もう少しプログラムっぽく for (int n = 0; n < 文字の種類数; n++) { String text = n文字ずらした暗号; if (textに「person」が含まれていたら) { system.out.println(text); break; } } これを実装していくことになる 834:t.mourning ◆HeJleJP5y2 16/03/13 00:32:35.66 .net ・文字の種類数 まず文字のchar配列を作っておく そうすることでずらす処理や文字種数を取得するのに便利になる static final char[] chars = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','.',',','-' }; そうしたうえで配列の要素数はlengthで取得する つまり chars.length ・n文字ずらした暗号 文字列を文字ごとに分解して分解した文字をn文字をずらす もともと暗号文はcharの配列であるので暗号文に対してforで一つずつアクセスし n文字ずらした文字を取得すればよい この最中するのが文字種数30より大きくなったaに戻ることを考慮すること これは30で割ったあまりとすれば解決できる ・textに「person」が含まれていたら StringにはindexOfというメソッドがありそれによって文字列が含まれているかどうかを調べることができる indexOfで文字列が含まれていない場合は返り値は-1になる 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch