【问题标题】:C# Method Continuously LoopsC#方法连续循环
【发布时间】:2020-03-24 10:51:53
【问题描述】:

我正在努力创建一个记录用户余额的程序。我构建了四种方法,用于管理用户的方法。这些方法包括 Main()、GetAmount()、Withdraw() 和 Deposit。每种方法都对数据执行特定操作。但是,GetAmount() 方法会不断循环,而不返回输入的金额。我试图使用 break 语句来打破 GetAmount() 方法中的循环,但它会不断循环整个方法。我想检查输入是否是双倍的。输入应传递给执行用户选择的操作的方法。

 public static void Main() //THIS IS A COPY OF MY CODE
    {
        char transaction;
        Console.WriteLine("Please enter a character 'W' to withdrawl, 'D' to deposit, 'P' to print balance, 'Q' to quit program)");

        while (!char.TryParse(Console.ReadLine(), out transaction) )
        {
            Console.WriteLine("Please enter valid character: ");
        }

        double balance = 0;
        double amount = GetAmount();

        do
        {
            switch (transaction)
            {
                case 'w':
                case 'W':

                    {

                        Withdrawal(amount, ref balance);
                        return;


                    }
                case 'd':
                case 'D':
                    {
                        Deposit(amount, ref balance);
                        return;
                    }
                case 'p':
                case 'P':
                    {
                        Print(balance);
                        return;
                    }
            }
        } while (char.ToUpper(transaction) != 'Q');

        Console.WriteLine("You have typed Q to quit the program!");
        Console.ReadLine();
    }



    public static double GetAmount()
    {
        double amount;
        Console.WriteLine("Please enter amount to withdraw or deposit");
         do
        {
           if (!double.TryParse(Console.ReadLine(), out amount))
            {
                Console.WriteLine("Please enter a valid amount.");
                break;
            }
            if (amount < 0)
            {
                Console.WriteLine("Please enter a value that is > 0.");
                break;
            }

        } while (amount > 0);

        return GetAmount();
    }
    public static void Withdrawal(double amount, ref double balance)
    {
            balance -= amount - 1.5;
        return;
    }

    public static void Deposit(double amount, ref double balance)
    {
        if (amount > 2000)
        {
            balance += amount * 1.01;
        }
        else
        { 
            balance += amount;
        }
        return;
    }
    public static void Print(double balance)
    {
        Console.WriteLine("Your total balance is {0:C}.", balance);
        return;
    }

【问题讨论】:

  • return GetAmount(); 函数是递归的。它调用自己并返回值

标签: c# banking


【解决方案1】:

GetAmount() 方法的最后,说:

return amount;

代替:

return GetAmount();

后者不正确,因为是递归方法调用:https://en.wikipedia.org/wiki/Recursion

【讨论】:

  • 谢谢!但是,我已经用金额替换了 GetAmount()。输入金额后程序结束。
  • 这听起来与您最初报告的问题不同!
  • 在另一位用户解释 GetAmount 方法是递归的后,我更改了它。但是,程序不断结束。
  • 这是一个不同的问题,你需要写一个不同的问题。
猜你喜欢
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
相关资源
最近更新 更多