【发布时间】:2018-10-27 01:54:19
【问题描述】:
public struct pay
{
public string name;
public int rate;
public int hours;
public int gross;
public int wtd;
public int ssd;
public int md;
public int net;
}
static void Main(string[] args)
{
pay[] myPay = new pay[3];
for (int i = 0; i<= 2; i++)
{
Console.WriteLine("Enter name: ");
myPay[i].name = Console.ReadLine();
Console.WriteLine("Enter pay rate: ");
myPay[i].rate = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Enter hours worked: ");
myPay[i].hours = Convert.ToInt16(Console.ReadLine());
}
Console.WriteLine("Name\tRate\tHours\tGross\t W/T\tSS\tMed\tNet");
for (int i = 0; i<=2; i++)
{
int gross = (myPay[i].rate * myPay[i].hours);
int wtd = (myPay[i].gross * (1/20));
int ssd = (myPay[i].gross * (3 / 100));
int md = (myPay[i].gross * (1 / 100));
int net = (myPay[i].gross - (md + ssd + wtd));
Console.WriteLine(myPay[i].name + "\t" + myPay[i].rate + "\t" + myPay[i].hours + "\t" + myPay[i].gross + "\t" + myPay[i].wtd + "\t" + myPay[i].ssd + "\t" + myPay[i].md + "\t" + myPay[i].net);
}
Console.ReadLine();
}
}
该代码旨在通过员工的姓名、费率和工作时间来计算总工资。然后,将从总工资(每个用 WTD、SD 和 MD 表示)中扣除成本,以找到员工的净收入。
无论出于何种原因,总工资的计算从未开始,因此以下计算也不会记录。任何帮助将不胜感激!
【问题讨论】:
-
如果他们从未开始,会发生什么?旁注:
1/20将评估为 0,因为您正在使用整数并且 0.05 小于 1。因此,在所有情况下,wtd、ssd 和 md 将评估为 0。 -
你能在控制台中显示你的程序的输出吗?
-
您在运行此程序时在控制台中输入的 exact 值是什么?当您运行此代码时,究竟会发生什么?
-
这将是学习使用调试器的绝佳时机。逐行浏览代码以查看发生了什么将帮助您自己快速解决此类问题。
-
string interpolation 是个好东西。