C#基本ATM,控制菜单显示流程

时间:2013-09-01 11:26:50

标签: c# loops boolean repeat

尝试为我的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()方法的顶部。

任何帮助都会非常有用。

1 个答案:

答案 0 :(得分:0)

我正在回答这个问题,因为我在第一年做了类似的事情,我也犯了类似的错误。

首先,您要调用Main以“跳转”到Main的开头。这样可行,但它会为您提供Main的嵌套调用。 Main已经变为递归。退出内部Main调用后,您将跳转到仍在运行的外部Main。尝试回答“n”,然后尝试退出该程序。你必须退出两次。

如果要在条件为真之前重复操作,可以使用此模式:

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
}

希望有所帮助。请随意在评论中提出后续问题。