2016-12-04 4 views
-3

私は初心者であり、この問題を抱えています。文字列内のすべての文字を入れ替えます。

コードでは、次のことが想定されています。私はいつもStringBuilderの大ファンだ

+4

これまでにお試しいただいた内容を投稿してください。 – Shriram

+2

文字列をchar配列に変換します。配列内の要素を交換し、配列をStringに変換します。 String javadocはあなたの友人です:http://docs.oracle.com/javase/8/docs/api/java/lang/String.html –

答えて

0

は、ここに私のソリューションです:

String word = <get input here>; 
StringBuilder builder = new StringBuilder(word); 
for (int i = 0 ; i + 2 < builder.length() ; i++) { 
    char temp = builder.charAt(i); 
    builder.setCharAt(i, builder.charAt(i + 2)); 
    builder.setCharAt(i + 2, temp); 
    System.out.println(builder); 
} 

説明:

我々は最初の文字列ビルダ(ライン2)への入力を置きます。

次に、i + 2が文字列の長さ(line3)以上になるまでループします。なぜiの代わりにi + 2が欲しいのですか?文字列の長さがnであると仮定し、最後のスワップはn番目の文字と(n-2)番目の文字を入れ替える必要があります。私たちは(n - 1)番目の文字に何もする必要はありません。

4行目から7行目では、コードが何をしているかははっきりしています。きっとあなたは、2つの変数の値を交換する方法を知っている:

int a = 10; 
int b = 20; 
int temp = a; 
a = b; 
b = temp; 

それは、しかし、文字列ビルダで、ここで同じことをやっsetCharAt方法を使用しています。

+1

注意:すべての彼/彼女の宿題をコピーして卒業したら、OPここから、あなたのチームの開発者になるかもしれません。宿題をする代わりに、何か試して勉強させてみませんか? –

+0

@JBNizet正しい方向に問題に近づいていないので、OPはここで立ち往生していると思う。だから私は説明をした。説明は、私が解決策を得た方法を示し、この問題が提示されたときにどう思いますか。もし彼/彼女が本当に問題解決の正しい考え方を学びたいなら、彼は尋ねたかもしれません。 – Sweeper

1

最初に文字列を配列の文字に分割し、最後の要素まで3番目に到達するまで、(i + 2)番目の要素でi番目の要素を交換する配列をループすることができます。サンプルコードを以下に示します。

String input = "December"; 
char[] testInput = input.toCharArray(); 
for(int i = 0; i <= input.length() - 3; i++){ 
    char temp = testInput[i]; 
    testInput[i] = testInput[i + 2]; 
    testInput[i + 2] = temp; 
} 
System.out.println(testInput); 
+0

あなたのスニペットが回転しています*** December *** *** *** cemberDe *** –

+0

@ΦXocę웃는Пepeúpaツ正しい出力ではありませんか? – Sweeper

+0

ひとつひとつ私は思う....質問で私にとっては明らかではない –

関連する問題