C#:方法 WFA 欠税计算器
C#: Methods WFA Tax Owed Calculator
我正在编写一个程序,该程序使用方法获取用户输入的收入并输出他们应缴纳的所得税。
我在第 46 行有一个错误,即 ``private double GetTax(double taxable)` GetTax 是一个 CS0161 - 并非所有代码路径 return 一个值。
我是否遗漏了对 GetTax 的引用?非常感谢您的意见!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab_4_Part_2_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
{
//Set input and output to floating decimal
double taxable = Convert.ToInt32(txtTaxable.Text);
GetTax(taxable);
}
private void EnterNum(double taxable)
{
throw new NotImplementedException();
}
private double GetTax(double taxable)
{
if (taxable <= 9225) return (taxable * 1.1);
if (taxable > 9225 | taxable < 37450) return (922.50 + (taxable * 1.15));
if (taxable > 37450 | taxable < 90750) return (5156.25 + (taxable * 1.25));
if (taxable > 90750 | taxable < 189300) return (18481.25 + (taxable * 1.28));
if (taxable > 189300 | taxable < 411500) return (46075.25 + (taxable * 1.33));
if (taxable > 411500 | taxable < 413200) return (119401.25 + taxable * 1.35);
if (taxable > 413200) return (119996.25 + (taxable * 1.396));
}
public string DisplayTaxable(double taxable)
{
return txtOwed.Text;
}
}
}
在您的 GetTax() 方法中,所有 return
语句都包含在 if 块中。这意味着,如果命中了 if 块的 none,则当前没有值被 returned。于是,编译报错。
解决此问题的最简单方法是将 <= 行或 > 行转换为最终的 return 语句行,例如:
private double GetTax(double taxable)
{
if (taxable <= 9225) return (taxable * 1.1);
//other cases omitted for brevity
return (119996.25 + (taxable * 1.396));
}
您可以使用 else
语句作为 return 值的前缀,但这不是必需的,更多的是一种代码风格选择。
我正在编写一个程序,该程序使用方法获取用户输入的收入并输出他们应缴纳的所得税。
我在第 46 行有一个错误,即 ``private double GetTax(double taxable)` GetTax 是一个 CS0161 - 并非所有代码路径 return 一个值。
我是否遗漏了对 GetTax 的引用?非常感谢您的意见!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab_4_Part_2_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalculate_Click(object sender, EventArgs e)
{
//Set input and output to floating decimal
double taxable = Convert.ToInt32(txtTaxable.Text);
GetTax(taxable);
}
private void EnterNum(double taxable)
{
throw new NotImplementedException();
}
private double GetTax(double taxable)
{
if (taxable <= 9225) return (taxable * 1.1);
if (taxable > 9225 | taxable < 37450) return (922.50 + (taxable * 1.15));
if (taxable > 37450 | taxable < 90750) return (5156.25 + (taxable * 1.25));
if (taxable > 90750 | taxable < 189300) return (18481.25 + (taxable * 1.28));
if (taxable > 189300 | taxable < 411500) return (46075.25 + (taxable * 1.33));
if (taxable > 411500 | taxable < 413200) return (119401.25 + taxable * 1.35);
if (taxable > 413200) return (119996.25 + (taxable * 1.396));
}
public string DisplayTaxable(double taxable)
{
return txtOwed.Text;
}
}
}
在您的 GetTax() 方法中,所有 return
语句都包含在 if 块中。这意味着,如果命中了 if 块的 none,则当前没有值被 returned。于是,编译报错。
解决此问题的最简单方法是将 <= 行或 > 行转换为最终的 return 语句行,例如:
private double GetTax(double taxable)
{
if (taxable <= 9225) return (taxable * 1.1);
//other cases omitted for brevity
return (119996.25 + (taxable * 1.396));
}
您可以使用 else
语句作为 return 值的前缀,但这不是必需的,更多的是一种代码风格选择。