私はまだc#を学んでいて、この問題に遭遇しました。ユーザーが整数を入力することを確認するプログラムを作りたかったのです。しかし、これを行うと、無限ループに陥ります。なぜブールb; ユーザーが整数を入力した場合でも、変数はcatchブロックの値を変更しますか?私のコード:
class MainClass
{
public static void Main (string[] args)
{
int n= 0;
bool b = true;
do {
try {
Console.WriteLine ("Enter an integer : ");
n = Convert.ToInt32 (Console.ReadLine ());
} catch (Exception e) {
Console.WriteLine (e.Message);
b = false;
} finally {
Console.WriteLine (n);
}
} while(b == false);
}
}
しかし、私はこれをしたときに問題を修正しました:
class MainClass
{
public static void Main (string[] args)
{
int n= 0;
bool b;
do {
try {
b = true;
Console.WriteLine ("Enter an integer : ");
n = Convert.ToInt32 (Console.ReadLine ());
} catch (Exception e) {
Console.WriteLine (e.Message);
b = false;
} finally {
Console.WriteLine (n);
}
} while(b == false);
}
}
誰か説明してもらえますか?
Bのユーザーが正しい入力を入力しない場合、変数は、永遠に偽として捕獲されます。したがって、すべてのループの開始時に、ブール変数をデフォルト値である「true」として設定する必要があります。これは、すべての反復は、ユーザーが整数を入力するための新しい試行である必要があるためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加