次のコードが動作しないのはなぜですか?次のコードで何が問題になります
String s = "fecbda";
Arrays.sort(s.toCharArray());
System.out.println(s);
次のコードが動作しないのはなぜですか?次のコードで何が問題になります
String s = "fecbda";
Arrays.sort(s.toCharArray());
System.out.println(s);
文字列は変更できないため、変更できません。これは何もするとは思わないはずです。あなたが意図している場合がありますどのような
は、それが動作しません
String s = "fecbda";
char[] chars = s.toCharArray();
Arrays.sort(chars);
String s2 = new String(chars);
System.out.println(s2);
'chars'を直接印刷できます。 's2'を作成する必要はありません。 – Andreas
完全な回答を得るには、['toCharArray()'](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toCharArray%28%29)のjavadocを引用してください: *新しく割り当てられた**文字配列を返す* – Andreas
@Andreas 'System.out.println(chars)'を使うことはできませんが、 'System.out.println(Arrays.toString(chars))'を使うことができます。私はOPが期待していたものではないと思う。 –
ですs.toCharArray()
として:
戻り値: 長さはこの文字列の長さと内容は、新しく割り当てられた文字列この文字列で表される文字シーケンスを含むように初期化されています。
ドキュメントの操作部分は、それが(文字列内の文字のすなわちコピー)新しい配列を作成し、その配列を並べ替えるときに、文字列をソートしていないということです。それは不変であるとしてあなたは、文字列を並べ替えることはできませんが、あなたがこのようなソートされた文字列から新しい文字列を作ることができ
:別の方法として、
String s = "fecbda";
char[] c = s.toCharArray();
Array.sort(c);
String n = new String(c);
、あなたはストリームを使用してJava 8でそれを行うことができます:
String s = "fecbda";
String n = s.chars() // Convert to an IntStream of character codes
.sorted() // Sort
.mapToObj(i -> Character.toString((char) i)) // Convert to strings
.collect(Collectors.joining()); // Concatenate the strings.
http://stackoverflow.com/q/36510808/3973077 –
どうしたのですか? – Sevle
"*デバッグのヘルプを求める質問(「なぜこのコードは動作しませんか?」)には、必要な動作、特定の問題またはエラー**、およびその問題自体の中でそれを再現するのに必要な最短のコードです。明確な問題文がない質問は他の読者には役に立たない* " - [私はここでどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-トピック) –