RT, 代码运行起来的时候金额都显示0。 调试的时候发现Candy.price Chips.price 都是0, 开始都给他们赋值了 为何运行起来的时候就变成0了。。。 不懂 求大神指导。
代码 如下:
public struct goods //描述商品的结构体数据类型
{
public string name;
public int quantity;
public double price;
}
class Store //描述连锁店的类
{
static double Totalsum;//连锁店总营业额,为静态成员,属于类所有
double sum; //普通实例成员,为对象所有
goods candy; //出售的商品
goods chips;
public string storeName;//店名
static Store() //静态构造函数,生成类的第一个实例时运行
{
Totalsum = 0;
}
public Store() //实例构造函数,创建对象时运行
{
goods candy;
candy.name = "candy";//商品名称
candy.price = 2;//单价
candy.quantity = 0;//初始库为0
goods chips;
chips.name = "chips";
chips.price = 5;
chips.quantity = 0;
sum = 0;//营业额为0
}
public void getCandy(int num)// 购进商品
{
Console.WriteLine("{0}新进糖果{1}", storeName, num);
candy.quantity += num; //购进商品
}
public void getChips(int num)
{
Console.WriteLine("{0}新近薯片{1}", storeName, num);
chips.quantity += num; //购进商品
}
public void SaleCandy(int num) //出售商品
{
if (candy.quantity >= num)
{
candy.quantity -= num;//卖出商品,修改库存
sum += candy.price * num;
Totalsum += candy.price * num;
Console.WriteLine("{0}卖出糖果:{1}包,金额:{2}元", storeName, num, candy.price * num);
}
else
Console.WriteLine("库存不足!");
}
public void SaleChips(int num) //出售商品
{
if (chips.quantity >= num)
{
chips.quantity -= num;//卖出商品,修改库存
sum += chips.price * num;
Totalsum += chips.price * num;
Console.WriteLine("{0}卖出糖果:{1}包,金额:{2}元", storeName, num, chips.price * num);
}
else
Console.WriteLine("库存不足!");
}
public double bussinessvoluem()
{
return sum; //本店营业额
}
public double Totalbusinessvolume()
{
return Totalsum;//各店营业总额
}
}
class Program //测试类
{
static void Main(string[] args)
{
Store storeA = new Store();//开第一店
storeA.storeName = "学院店";
storeA.getCandy(20);
storeA.getChips(25);
storeA.SaleCandy(12);
storeA.SaleChips(15);
Console.WriteLine(storeA.storeName + "营业额是{0}元", storeA.bussinessvoluem());
Console.WriteLine("各店营业额总计是{0}元", storeA.Totalbusinessvolume());
Store storeB = new Store();//开第二店
storeB.storeName = "大学店";
storeB.getCandy(20);
storeB.getChips(20);
storeB.SaleCandy(2);
storeB.SaleChips(10);
Console.WriteLine(storeB.storeName + "营业额是{0}元", storeA.bussinessvoluem());
Console.WriteLine("各店营业额总计是{0}元", storeA.Totalbusinessvolume());
Console.ReadKey();
}
}
------解决思路----------------------
构造函数里你把candy和chips声明成了局部变量
------解决思路----------------------
把 name 等 get;set 一下
------解决思路----------------------
就该这样改
------解决思路----------------------
1、candy、chips,你声明为了全局变量,这个没错,但是你再构造函数再次做了声明且和全局变量同名
当私有变量和全局变量同名时,公有变量被覆盖,也就是说构造函数赋值的是构造函数声明的candy、chips,而不是全局变量
所以,你的全局变量candy、chips一直保持默认值
2、把构造函数声明的candy、chips代码去掉即可