C#保险报价程序条件判断异常:输入No仍执行加75操作求助
问题分析与修正方案
你的核心问题是条件判断逻辑错误——大概率是把相等判断运算符==写成了赋值运算符=,或是未处理输入的大小写/缩写匹配,导致无论输入Y/N都会执行加75的操作。以下是针对性的修正方案:
核心判断逻辑修正
错误代码示例(推测)
// 错误:用赋值=替代了判断==,条件永远为true string smokerStatus = Console.ReadLine(); if (smokerStatus = "Y") { BaseQuote +=75; } else if (smokerStatus = "N") { BaseQuote -=100; }
修正后的代码
// 吸烟状态判断:统一转小写处理,覆盖Y/Yes、N/No的大小写输入 string smokerStatus = Console.ReadLine().Trim().ToLower(); if (smokerStatus == "y" || smokerStatus == "yes") { BaseQuote += 75; } else if (smokerStatus == "n" || smokerStatus == "no") { BaseQuote -= 100; } else { Console.WriteLine("输入无效,请输入Y/Yes或N/No"); } // 健康状况判断逻辑完全一致 string conditionStatus = Console.ReadLine().Trim().ToLower(); if (conditionStatus == "y" || conditionStatus == "yes") { BaseQuote += 75; } else if (conditionStatus == "n" || conditionStatus == "no") { BaseQuote -= 100; } else { Console.WriteLine("输入无效,请输入Y/Yes或N/No"); }
关键修正点
- 用
==做相等判断,而非=(=是赋值操作,会让条件恒为true) - 调用
ToLower()统一转换输入为小写,避免大小写不匹配(比如"Y"和"y"都能被识别) - 明确分支逻辑:匹配Y/Yes时加75,匹配N/No时减100,添加无效输入提示
完整可运行程序示例
using System; class InsuranceQuoteCalculator { static void Main() { decimal baseQuote = 500; // 基础报价初始值 // 吸烟状态输入处理 Console.WriteLine("请输入吸烟状态(Y/Yes 或 N/No):"); string smokerInput = Console.ReadLine().Trim().ToLower(); UpdateQuote(ref baseQuote, smokerInput); // 健康状况输入处理 Console.WriteLine("请输入健康状况(Y/Yes表示有既往病史,N/No表示无):"); string healthInput = Console.ReadLine().Trim().ToLower(); UpdateQuote(ref baseQuote, healthInput); Console.WriteLine($"最终保险报价:{baseQuote:C}"); } // 提取重复逻辑为复用方法,减少冗余 static void UpdateQuote(ref decimal quote, string input) { if (input == "y" || input == "yes") { quote += 75; } else if (input == "n" || input == "no") { quote -= 100; } else { Console.WriteLine("输入无效,未修改报价"); } } }
内容的提问来源于stack exchange,提问作者DrHelix
相关产品推荐
相关产品推荐

