1

C# クラスの基本的な ATM プログラムを作成しようとしています。

つまり、プログラムには、整数値が既に格納されている 4 つのアカウントがあります。プログラムは、最初にユーザーが実行したいアクション (残高の表示、引き出し、送金) を表示し、次にユーザーを選択したメニューに移動させ、プログラム内で必要なタスクを実行できるようにする必要があります。

に問題があるだけDisplay Balance menuです。ユーザーが別の残高を表示するかどうかを尋ね、[残高の表示] メニュー セクション (コード セクションはこちら) を再起動します。ここに私が持っているものがあります:

if (ACCselect == 1)
{
    string yesno1 = " ";
    int dispSEL = 1;

    Console.WriteLine();
    Console.WriteLine("$$$===Display Balance===$$$");
    Console.WriteLine();
    Console.WriteLine("\t 1) Savings Account");
    Console.WriteLine("\t 2) Debit Card Account");
    Console.WriteLine("\t 3) Credit Card Account");
    Console.WriteLine("\t 4) Investment Account");
    Console.WriteLine();
    Console.Write("Select account with 1-4: ");

    dispSEL = int.Parse(Console.ReadLine());
    DisplayBalance(dispSEL);

    Console.WriteLine();
    Console.Write("Would you like to select another account? (y/n): ");
    yesno1 = Console.ReadLine();
    if (yesno1.ToUpper() == "Y")
    {
        yesno1a = true;
    }
    else
    {
        Main();
    }
} while (yesno1a == true)

これは の一部ですMain()。ACCselect は、表示残高、引き出しなどを希望するかどうか、ユーザーが行う選択を指します。

このDisplayBalance()メソッドは、配列から適切な整数値を選択し、対応する残高を表示します。

ユーザーが「y」を選択した場合、プログラムでこのコード セクションを繰り返すにはどうすればよいですか? ユーザーが「n」を選択すると、Main() メソッドの先頭にループバックします。

どんな助けでも非常に役に立ちます。

4

1 に答える 1

0

私は最初の年に同様のことをしたので、これに答えています。同様の間違いを犯しました。

Mainまず、の先頭に「ジャンプ」するために呼び出していますMain。それは機能しますが、ネストされた への呼び出しが発生しMainます。Main再帰的になりました。内部呼び出しを終了すると、まだ実行中Mainの外部呼び出しにジャンプします。Main「n」と答えてから、プログラムを終了してみてください。2 回終了する必要があります。

条件が true になるまでアクションを繰り返したい場合は、次のパターンを使用できます。

while(true) { //loop forever
 if (SomeCondition()) break; //exit
 else {
  DoStuff();
 }
}

あなたの問題に適用すると、次のようになります。

while(true) { //loop forever
 dispSEL = int.Parse(Console.ReadLine());
 DisplayBalance(dispSEL);

 Console.Write("Would you like to select another account? (y/n): ");
 yesno1 = Console.ReadLine();

 if (yesno1 == "n") break; //exit
 else continue; //next loop iteration
}

それが役立つことを願っています。コメントでフォローアップの質問をしてください。

于 2013-09-01T12:26:28.707 に答える