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”,然后尝试退出程序。您将不得不退出两次。

如果你想重复一个动作直到条件为真,你可以使用这个模式:

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 回答