1

これを行う簡単な方法があることは知っています...そうは言っても、選択ソートとstringBuilderクラスを使用して文字列をソートしようとしていますが、無限ループが発生しています。誰かが助けてくれれば、感謝します。パッケージChapter9Str; import java.util.*;

public class SortedString {

    public static void main(String[] args) {
        String input = "cabed";

        System.out.println(sort(input));
    }

    public static String sort(String str) {     
        StringBuilder sb = new StringBuilder(str);

        for(int i=0; i<sb.length()-1; i++) {
            char tmp;
            for(int j=i+1; j<sb.length(); j++) {
                if(sb.charAt(j) < sb.charAt(i)) {
                    tmp = sb.charAt(i);
                    sb.insert(i, sb.charAt(j));
                    sb.insert(j,  tmp);
                }
            }
        }
        return sb.toString();       

    }

}
4

1 に答える 1

3

スワップするたびに、実際には文字列の長さを増やしています。

            if(sb.charAt(j) < sb.charAt(i)) {
                tmp = sb.charAt(i);
                sb.insert(i, sb.charAt(j));
                sb.insert(j,  tmp);
            }

Insert は、文字を置き換えるのではなく、指定された場所にスペースを作ります。たとえば、 で開始すると、コードのそのセクションに到達した後、 ではなく ,acbdが残ります。abccbdabcd

あなたが探しているのはsetCharAtメソッドだと思います。

于 2012-12-14T00:21:36.860 に答える