-2
タイトルは説明的ではないかもしれませんが、私と一緒にいてください。 これはどのようにブーブレソートのようになるはずです:私は誤ってこのようにそれを書いたしかしどのように泡立てる? | C#
string s = Console.ReadLine();
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.Length; i++)
{
for (int j = 0; j < sb.Length - 1; j++)
{
if (sb[j] > sb[j + 1])
{
char tmp = sb[j];
sb[j] = sb[j + 1];
sb[j + 1] = tmp;
}
}
}
s = sb.ToString();
Console.WriteLine(s);
と、この作業は、私は、少なくともindexOutOfRange例外を取得するべきではありませんされて、なぜ私は知らないのですか? - >
string s = Console.ReadLine();
StringBuilder str = new StringBuilder(s);
for (int i = 0; i < s.Length; i++)
{
for (int j = 0; j < str.Length; j++)
{
if (str[i] < str[j])
{
var tmp = str[j];
str[j] = str[i];
str[i] = tmp;
}
}
}
s = str.ToString();
Console.WriteLine(s);
これを明確にするために、アルファベット順に単語の文字を並べます。
インデックスは、2番目のバージョンでは常に範囲内にあります。 'i'と' j'だけを使い、 'Length'よりも常に小さくなります。これは' StringBuilder'の文字列とそのコピーの両方で同じです。なぜあなたは例外を期待しますか? –
''なぜこのコードが動作するのですか? ''の質問に対して、 ''デバッグヘルプを求める質問(なぜこのコードは動作しませんか?)」の引数のほとんどまたはすべてが有効です。だから、私は閉じようとしている。ところで、これはおそらく最初の "なぜこのコードが動作するのですか?" – fvu