2017-01-24 4 views
-1

なぜ私はいつもcharを得るのですか? intとcharの間で変換するとき?私は、Microsoft Visual C#を使用してい

Console.Write((char)((int)sentence[i] + random.Next(2) == 0 ? 1 : -1)); 

私は文の現在のインデックスに私が持っている文字をConsole.Writeしようとしている[i]はなく、ランダムにどちらかそれより上または下のcharを取得。 しかし、代わりに私はいつもchar '?'を取得します。 なぜですか?

+0

大括弧がありません。あなたのコードは 'sentence [i] + if(rnd){} ...'ではなく 'if [if] + rnd == 0'を行っています。コードを次のように変更してください: 'Console.Write((char)(int)sentence [i] +(random.Next(2)== 0?1:-1))));' – Rob

+0

ああ、もちろん!ありがとう、これは意味がある。 – PlayCreatively

答えて

1

操作の問題が発生しています。括弧を追加してみてください:

Console.Write((char)((int)sentence[i] + (random.Next(2) == 0 ? 1 : -1))); 

括弧がなければ、それはやっていた:

を(文[i]が+ random.Next(2))== 0? 1:-1

...これは常に1または-1のいずれかになります。 ASCII文字の範囲を指定すると、ほぼ確実に常に-1になります。これは明らかに印刷可能な文字ではないため、?の出力です。

+0

詳細をお寄せいただきありがとうございます。彼らは彼らの背後に論理的な推論があるとき、失敗を覚えておくのに役立ちます。 – PlayCreatively

関連する問題