You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#银行账户开发:实现余额不低于-500的最大取款及剩余金额计算

解决方案:实现银行账户取款的最大允许额度处理

我来帮你搞定这个取款方法的问题!核心思路很明确:当用户请求的取款金额会让账户余额跌破-500的下限,我们得算出实际能取出的最大金额,同时统计无法提取的剩余金额,最后把账户余额固定到-500的最低值。

逻辑拆解

  1. 当取款后余额会低于-500时:
    • 实际可提取金额 = 当前余额 - (-500) → 也就是 Kontostand + 500(毕竟最终余额要降到-500,取出的就是当前余额和下限的差值)
    • 无法提取的剩余金额 = 用户请求的取款金额 - 实际可提取金额
    • 直接把账户余额设置为-500
  2. 正常情况(取款后余额≥-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:12:33