C#银行账户开发:实现余额不低于-500的最大取款及剩余金额计算
解决方案:实现银行账户取款的最大允许额度处理
我来帮你搞定这个取款方法的问题!核心思路很明确:当用户请求的取款金额会让账户余额跌破-500的下限,我们得算出实际能取出的最大金额,同时统计无法提取的剩余金额,最后把账户余额固定到-500的最低值。
逻辑拆解
- 当取款后余额会低于-500时:
- 实际可提取金额 = 当前余额 - (-500) → 也就是
Kontostand + 500(毕竟最终余额要降到-500,取出的就是当前余额和下限的差值) - 无法提取的剩余金额 = 用户请求的取款金额 - 实际可提取金额
- 直接把账户余额设置为-500
- 实际可提取金额 = 当前余额 - (-500) → 也就是
- 正常情况(取款后余额≥-500):直接扣除请求的金额,更新余额即可
修改后的完整代码
using System; namespace ConsoleApp1 { public class Konto { // 属性 public double Kontostand { get; set; } public string Besitzer { get; set; } public void Einzahlen(double betrag) { // 可选:验证存款金额为正数,避免无效操作 if (betrag <= 0) { Console.WriteLine("存款金额必须大于0!"); return; } Kontostand += betrag; Console.WriteLine("Es wurden {0} Eingezahlt!", betrag); Console.WriteLine("Der neue Kontostand beträgt " + Kontostand); } public void Auszahlen(double betrag) { // 可选:验证取款金额为正数,避免无效操作 if (betrag <= 0) { Console.WriteLine("取款金额必须大于0!"); return; } // 先算出取款后的预期余额 double neuerKontostand = Kontostand - betrag; if (neuerKontostand < -500) { // 计算实际能取的最大金额 double tatsaechlicherBetrag = Kontostand - (-500); // 计算没法取出的剩余金额 double restBetrag = betrag - tatsaechlicherBetrag; // 更新余额到最低允许值 Kontostand = -500; Console.WriteLine($"Es können nicht {betrag} Ausgezahlt werden!"); Console.WriteLine($"Maximal möglicher Betrag von {tatsaechlicherBetrag} wurde ausgezahlt."); Console.WriteLine($"Unauszahlbarer Restbetrag: {restBetrag}"); Console.WriteLine("Der neue Kontostand beträgt " + Kontostand); } else { Kontostand -= betrag; Console.WriteLine($"Es wurden {betrag} Ausgezahlt!"); Console.WriteLine("Der neue Kontostand beträgt " + Kontostand); } } } }
额外优化说明
- 我加了存款/取款金额的正数验证,避免用户输入0或者负数这类无效值(属于可选的健壮性优化)
- 用了字符串插值
$""让输出代码更简洁易读 - 判断条件改成了
neuerKontostand < -500,因为余额等于-500是符合规则的,不需要触发限制逻辑
内容的提问来源于stack exchange,提问作者Nicklas
相关产品推荐
相关产品推荐

