黑马程序员技术交流社区
标题:
我写的个关于打折卡的 小代码 出了点小问题 求高手帮忙
[打印本页]
作者:
amazon41762
时间:
2013-5-13 18:45
标题:
我写的个关于打折卡的 小代码 出了点小问题 求高手帮忙
本帖最后由 刘胜寒 于 2013-5-18 03:36 编辑
//打折卡小软件
//通过曾经的消费数额来确定折扣 1000-2000元 9折 2000-5000元8折 5000元以上7折
//思路:先定义打折卡的 用户的名称、消费金额、地址和所享受到折扣
class Dazheka
{
private String name;
private int cost=10;
private String address;
private double zhekou=1;
public void setCost(int a)
{
if (a>0)
{
cost +=a;
}
else
cost -=a;
}
public int getCost ()
{
return cost;
}
public void setName(String n)
{
name=n;
}
public String getName()
{
return name;
}
public void setAddress(String b)
{
address=b;
}
public String getAddress()
{
return address;
}
public void setZhekou()
{
if (cost>=1000)
{
zhekou-=0.1;
}
else if (cost>=2000)//这一块 不管cost怎么变 折扣 都不变是怎么回事啊
{
zhekou-=0.2;
}
else if (cost>=5000)
{
zhekou-=0.3;
}
}
public double getZhekou()
{
return zhekou;
}
void dayin()
{
System.out.println("name:"+name);
System.out.println("address:"+address);
System.out.println("cost:"+cost);
System.out.println("zhekou:"+zhekou);
}
}
class Zhekou1
{
public static void main (String[] args)
{
Dazheka z=new Dazheka();
z.setName("zhanghao");
z.setCost(3000);
z.setAddress("xiangyang");
z.dayin();
}
}
复制代码
无论我的cost的值怎么变 我的zhekou的值就是不变。。
这是怎么回事啊???
作者:
amazon41762
时间:
2013-5-13 20:05
没人在吗?
作者:
ZhaoYuBetter
时间:
2013-5-13 20:44
好好看看你的这个方法,逻辑有问题,而且这个方法没有被调用
public void setZhekou() {
if (cost >= 1000) {
zhekou -= 0.1;
} else if (cost >= 2000)// 这一块 不管cost怎么变 折扣 都不变是怎么回事啊
{
zhekou -= 0.2;
} else if (cost >= 5000) {
zhekou -= 0.3;
}
}
作者:
lipingan0520
时间:
2013-5-13 20:54
class Zhekou1
{
public static void main (String[] args)
{
Dazheka z=new Dazheka();
z.setName("zhanghao");
z.setCost(3000);
//z.setZhekou(); 没调用判断折扣方法,所以打折不变,加上这句就行
z.setAddress("xiangyang");
z.dayin();
}
}
复制代码
public void setZhekou() //折扣方法,改成这样,能实现你要的功能
{
if (cost >= 1000 && cost < 2000)
{
zhekou-=0.1;
}
else if (cost >= 2000 && cost < 5000)//这一块 不管cost怎么变 折扣 都不变是怎么回事啊
{
zhekou-=0.2;
}
else if (cost >= 5000)
{
zhekou-=0.3;
}
}
复制代码
作者:
飞鸟青崖
时间:
2013-5-14 09:27
你的setZheKou方法有问题。
当cost不小于1000时会执行if中的语句,当cost小于1000时才会执行下面的语句。
但是你在else中判断的是cost不小于2000,不小于5000的情况,这根本不可能执行到。
所以才会现出问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2