我正在创建一个小程序,要求用户输入一些关于他们自己的信息,然后输入他们完成了多少小时的工作,然后计算他们的总工资,净工资和税后工资。我不是100%熟悉c#中的所有术语,但希望有人可以指导我朝正确的方向发展,我也想知道是否有任何方法可以缩短代码,使其看起来更干净,更容易阅读以及如何使它在数字后面只有2位小数。
这只是我收到错误的代码的一小部分。 所有这些都是花车
hrsworked:用户输入他们工作了多少小时
税:预定值为35.72%
prate:只需支付每小时31.31美元的费用
Console.WriteLine("\nGross Pay " + (hrsworked * prate).ToString("c"));
Console.WriteLine("Tax " + ((hrsworked * prate) * (tax / 100)).ToString("c"));
Console.WriteLine("Net Pay " + ((hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c")));
答案 0 :(得分:4)
您的代码中存在一些拼写错误。花点时间仔细检查一下你正在做什么。
以此行为例,这会导致标题出错:
((hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c")));
以下是括号的分组方式:
(
(hrsworked * prate)
-
((hrsworked * prate) * (tax / 100)).ToString("c")
)
您尝试从数字中减去字符串。您需要调整括号:
... ((hrsworked * prate) - ((hrsworked * prate) * (tax / 100))).ToString("c"));
对于"清洁工",我绝对遵循Blorgbeard的建议并将其打破。例如:
var grossPay = hrsworked * prate;
var taxPercentage = tax / 100;
... + grossPay.ToString("c"));
... + (grossPay * taxPercentage).ToString("c"));
... + (grossPay - (grossPay * taxPercentage)).ToString("c")));
(由于操作顺序,你不需要上面最后一行的最里面的括号,但我认为它使它更具可读性.YMMV)
答案 1 :(得分:1)
Console.WriteLine("Please enter hours.");
var hoursWorked = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please enter pay rate");
var payRate = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please enter tax.");
var tax = Convert.ToDouble(Console.ReadLine());
var grossPay=(hoursWorked * payRate);
var taxAmount = (grossPay * (tax / 100));
var netPay = grossPay - taxAmount;
Console.WriteLine(string.Format("Gross Pay {0}",grossPay.ToString("c")));
Console.WriteLine(string.Format("Tax {0}", taxAmount.ToString("c")));
Console.WriteLine(string.Format("Net Pay {0}", netPay.ToString("c")));
答案 2 :(得分:0)
错误在于代码的这一部分:
(hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c"))
您尝试从((hrsworked * prate) * (tax / 100)).ToString("c")
(hrsworked * prate)
您可以尝试在http://www.dotnetperls.com/中阅读有关C#的内容。我发现这些例子很容易理解。