保险报价程序求助:报价变量无法随输入参数递增
保险报价程序报价不更新的问题修复
核心问题分析
- 报价变量未实际更新:你在判断性别后,仅计算了
Quote + 250或Quote + 175的数值,但没有把结果重新赋值给Quote变量,导致原变量值始终保持初始的250。 - 性别判断逻辑错误:
if (Gender != "male" || Gender != "Male")这个条件永远为真——任何输入不可能同时等于"male"和"Male",应该用&&或者统一转成小写/大写后判断。 - 健康状况的报价调整未实现:代码里注释了
// Quote + 50%,但没有编写实际执行该逻辑的代码。 - 年龄因素未参与报价计算:你定义了年龄变量,但没有用它来调整报价。
修复后的完整代码
using System; namespace Insurance { internal class Insurance { public static void Main(string[] args) { Console.WriteLine("Nationwide Heath Insurance Co.\n"); int CustomerID = 1; int Age; int Quote = 250; // 基础报价 string Eir, Gender, FirstName, LastName, UserAge; bool ConditionBool; Console.WriteLine("请输入你的名字:"); FirstName = Console.ReadLine(); Console.WriteLine("请输入你的姓氏:"); LastName = Console.ReadLine(); Console.WriteLine("请输入你的性别:"); Gender = Console.ReadLine(); // 统一转小写判断性别,并更新报价 if (!string.IsNullOrEmpty(Gender)) { string lowerGender = Gender.ToLower(); if (lowerGender == "male") { Quote += 250; } else if (lowerGender == "female") { Quote += 175; } // 可按需添加其他性别的处理逻辑 } Console.WriteLine("请输入你的年龄:"); UserAge = Console.ReadLine(); if (int.TryParse(UserAge, out Age)) { // 示例:40岁以上报价加100,可根据需求调整规则 if (Age > 40) { Quote += 100; } } else { Console.WriteLine("年龄输入无效,将使用默认年龄系数。"); } Console.WriteLine("请输入你的地址(eircode):"); Eir = Console.ReadLine(); if (!string.IsNullOrEmpty(Eir)) { Eir = Eir.ToUpper(); } string BadConditions = "你是否有既往病史?( y/n )"; Console.WriteLine(BadConditions); ConditionBool = AskCondition(ref BadConditions); // 处理健康状况的报价调整:加50% if (ConditionBool) { Quote = (int)(Quote * 1.5); } Console.WriteLine($"报价ID: {CustomerID}\n"); Console.WriteLine($"姓名: {FirstName} {LastName}"); Console.WriteLine($"年龄: {Age}"); Console.WriteLine($"性别: {Gender}"); Console.WriteLine($"地址: {Eir}"); Console.WriteLine($"既往病史: {BadConditions}"); Console.WriteLine($"最终报价: {Quote}"); } private static bool AskCondition(ref string BadConditions) { bool ConditionBool; while (true) { string ConditionAnswer = Console.ReadLine(); if (!string.IsNullOrEmpty(ConditionAnswer)) { ConditionAnswer = ConditionAnswer.ToLower(); if (ConditionAnswer == "y") { ConditionBool = true; Console.WriteLine("请用逗号分隔你的病史情况:"); BadConditions = Console.ReadLine(); break; } else if (ConditionAnswer == "n") { ConditionBool = false; break; } } Console.WriteLine("只能输入 y 或 n!"); } return ConditionBool; } } }
关键修改说明
- 更新报价变量:把
Convert.ToInt32(Quote + 250)改成Quote += 250,直接将计算结果赋值回变量,实现数值更新。 - 修正性别判断逻辑:将输入转成小写后判断,既避免大小写敏感问题,也修正了原逻辑的错误。
- 实现健康状况调整:在获取病史判断结果后,根据布尔值给报价增加50%。
- 添加年龄因素处理:增加了年龄判断示例(40岁以上加100),你可以根据作业要求调整具体规则。
- 输入校验优化:添加了空值和无效输入的处理,避免程序因异常输入崩溃。
内容的提问来源于stack exchange,提问作者DrHelix
相关产品推荐
相关产品推荐

