0

I wrote a text, and i want to change some chars to any other chars which the user will choosing them, I tried and couldn't find the correct answer, so please guide me. the code in the MyTest Class is:

public String replace(String input,char from,char to){
   String input2 ="";
   String input3="";
   this.input=input3;
   for(int i=0;i<input.length();i++){
       for(int j=0;j<input3.length();j++){
          if(input.charAt(i)==input3.charAt(j)){
              input2=input3.replace(from, to);
              System.out.println(input2);
          }
       }

   }
   return input2;
}

And the code in the Main Class:

System.out.println("please enter the new character: ");
   char c1 = scan.next().charAt(0);
   System.out.println("Please choose the letters that you want to change it which in the text:");
   String ltr = scan.next();
   obj1.convertChars(ltr, c1);
4

3 に答える 3

3

(1) すべきこと:

あなたが求めているものには簡単な方法があります: String#replace(char,char):

String replaced = myString.replace(from,to);

(2) コードが失敗する理由:

空の文字列であるときに、replace()onを反復して呼び出そうとしていることに注意してください! input3あなたはそれを変更したことはありません!事実上、あなたのメソッドは何もしません(インスタンス変数を割り当てることを除いてinput.間違いなくあなたが望んでいたものではありません.

(3) また重要: String Java の s は不変です

Java では、Stringは不変です。したがって、実際に行っているのは、置換された文字で新しい文字列を作成することであり、同じ文字列オブジェクト内の文字を置換することではありません!

の変更Stringはそれほど単純ではないため、避ける必要がありますが、リフレクション APIを使用して行うことができます。

于 2012-12-13T12:10:43.910 に答える
1

あなたがやりたいことは、メソッドであってはなりません。理由は次のとおりです。

public String replace(String input,char from,char to){
    return input.replace(from, to);
}

したがって、この種のメソッドは値を追加しません。String のreplace()メソッドを直接呼び出す必要があります。

于 2012-12-13T12:04:11.103 に答える
0

質問は少し不明確に見えました。次のような関数が必要だと思います。main関数からこの関数を呼び出します。文字列"abcde"、'a'、'x'を渡します。「xbcde」が返されます。

public String replace(String inputStr, char from, char to){
    StringBuffer newString=new StringBuffer();
    for(int i=0;i<inputStr.length();i++){
        if(inputStr.charAt(i)==from){
            newString.append(to);
        }
        else{
            newString.append(inputStr.charAt(i));
        }
    }
    return newString.toString();
}
于 2012-12-13T12:24:36.123 に答える