みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

javaについて質問です。お願いします><

javaについて質問です。お願いします><
シーザー暗号を実現するプログラムをじゃいたのですが、import java.io.*;

class Prob6_3
{
public static void main(String [] args)throws IOException
{
int key; //キー番号
String orgStr; //ターゲット文字列
String encStr; //暗号化文字列
String decStr; // 復号化文字列

String temp;

BufferedReader br=
new BufferedReader(new InputStreamReader(System.in));

System.out.print("ターゲット文字列:");
orgStr=br.readLine();
System.out.print("キー番号:");
temp=br.readLine();
key=Integer.parseInt(temp);

Cipher cip=new Cipher ();

encStr=cip.encrypt(orgStr,key);
decStr=cip.decrypt(encStr,key);

System.out.println("[Original Code]"+orgStr);
System.out.println("[Encrypted Code]"+encStr);
System.out.println("[Decrypted Code]"+decStr);
}
}

class Cipher
{

String encrypt(String str,int key)
{
String ret="";             //ココです1
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
c=(char)((int)c+key);
ret+=c;
}
return ret;

}


String decrypt(String str,int key)
{
String ret="";              //ここです2
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
c=(char)((int)c-key);
ret+=c;

}
return ret;
}

}  
とこんな感じになり実行もできるのですが、class CipherのString encrypt(String str,int key)やString decrypt(String str,int key)のところで一つずつ文字をつなげて文字列にするにはStringBufferクラスのインスタンスを利用すると簡単だとききました。だけど記述方法がよくわからなく使用した場合のreturn文の書き方もイマイチわかりません><なのでできるだけ詳しく教えて頂けないでしょうか??お願いします。//ココですと書いてあるところです。お願いします><

投稿日時 - 2010-06-05 12:57:52

QNo.5946228

すぐに回答ほしいです

質問者が選んだベストアンサー

前回の質問で答えさせて頂いた者ですが、toStringというメソッドを使うとStringBuffer(あるいはStringBuilder)をStringとしてreturnすることができます。

上のプログラムを以下のようにすればできます。

String decrypt(String str,int key)
{

// String ret=""; // <- ここを以下に変更
StringBuffer sb = new StringBuffer(); // もしくはStringBuilder

for(int i=0;i<str.length();i++){
char c=str.charAt(i);
c=(char)((int)c-key);

sb.append( c ); // ここでcをsbにつなげる

}

return sb.toString();// 文字列(String型)をリターン


まず、StringBurrerのappendメソッドをつかうことでsbが参照している文字列にcに入っている文字を繋げることができます。

toStringは大体のクラスにあるメソッドで、この場合はsbに入ってる文字列をString型として返してくれます。

投稿日時 - 2010-06-05 18:14:58

補足

ご親切にありがとうございました><
Java仕様書のを読むのもなかなか難しいものですね・・。
ずっと悩んでいたので大変助かりました。
ありがとうございます

投稿日時 - 2010-06-05 19:51:33

お礼

ご親切にありがとうございました><
Java仕様書のを読むのもなかなか難しいものですね・・。
ずっと悩んでいたので大変助かりました。
ありがとうございます

投稿日時 - 2010-06-05 19:52:09

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

JDKが1.5以降ならStringBuilder。

[java StringBuilder]で検索するといろいろ見つかりますよ。

投稿日時 - 2010-06-05 13:17:21