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

C#薪资计算代码报错‘变量未定义(comision)’,求问题排查

问题排查与解决:C#变量未定义(comision)错误

问题原因

你的代码仅在categoria等于1、2、3时给comision赋值,但如果用户输入的categoria是其他数值(比如0、4等),comision会处于未赋值状态。C#要求局部变量必须明确赋值后才能使用,因此编译器抛出“变量未定义(comision)”的错误。

修复方案

有两种实用的修复方式:

方式1:声明时初始化comision为默认值

在声明变量时直接给comision赋值0,确保无论输入何种分类,变量都有初始值:

double montoVendido, comision = 0, sueldoBruto, d, sueldoNeto;
int categoria, sueldoBasico=250;

Console.Write("Ingrese su monto vendido: ");
montoVendido = Convert.ToDouble(Console.ReadLine());
Console.Write("Ingrese su categoria: ");
categoria = Convert.ToInt32(Console.ReadLine());

if (categoria == 1) comision = (montoVendido * 14.25) / 100; 
else if (categoria == 2) comision = (montoVendido * 13) / 100; 
else if (categoria == 3) comision = (montoVendido * 11.75) / 100;

sueldoBruto = sueldoBasico + comision;

if (sueldoBruto > 3500) d = (sueldoBruto * 15) / 100;
else d = (sueldoBruto * 10) / 100;

sueldoNeto = sueldoBruto - d; 

Console.WriteLine($"Su sueldo basico es de {sueldoBasico} soles\nSu comision es de {comision} soles\nSu sueldo bruto es de {sueldoBruto}\nSu descuento es de {d} soles\nSu sueldo neto es de {sueldoNeto} soles");
Console.ReadKey();

方式2:添加else分支处理非法分类

如果需要对非法分类给出提示,可以补充else分支明确处理:

double montoVendido, comision, sueldoBruto, d, sueldoNeto;
int categoria, sueldoBasico=250;

Console.Write("Ingrese su monto vendido: ");
montoVendido = Convert.ToDouble(Console.ReadLine());
Console.Write("Ingrese su categoria: ");
categoria = Convert.ToInt32(Console.ReadLine());

if (categoria == 1) comision = (montoVendido * 14.25) / 100; 
else if (categoria == 2) comision = (montoVendido * 13) / 100; 
else if (categoria == 3) comision = (montoVendido * 11.75) / 100;
else {
    comision = 0;
    Console.WriteLine("Categoria invalida, comision se establece en 0");
}

sueldoBruto = sueldoBasico + comision;

if (sueldoBruto > 3500) d = (sueldoBruto * 15) / 100;
else d = (sueldoBruto * 10) / 100;

sueldoNeto = sueldoBruto - d; 

Console.WriteLine($"Su sueldo basico es de {sueldoBasico} soles\nSu comision es de {comision} soles\nSu sueldo bruto es de {sueldoBruto}\nSu descuento es de {d} soles\nSu sueldo neto es de {sueldoNeto} soles");
Console.ReadKey();

额外优化建议

  • 可以给montoVendido和categoria添加输入验证,比如用double.TryParse和int.TryParse替代直接转换,避免非法输入导致程序崩溃。
  • 提前提示用户输入1-3之间的分类数值,减少非法输入的情况。

内容的提问来源于stack exchange,提问作者nicoo_principiante

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:40:16