我已经在这个java程序上工作了一段时间,但我遇到了墙,我需要帮助。我运行这个程序,一切正常,除了优惠券按钮。它有效但当我使用的优惠券数量大于总价时它会显示负数。我需要帮助,以便在输入更高的优惠券号码时出现零。我想我必须编写一个循环(如果bill< 0){str =“0”}。代码链接如下。
答案 0 :(得分:0)
bill var中存在逻辑错误;我可以得到它,优惠券应该很多项目但每张优惠券只有一个账单吗?所以请不要将bill var作为本地字段,因为每次事件发生时都会重新显示账单;所以为了使它迭代数据,make class字段见例:
问题代码
...
public void actionPerformed(ActionEvent e)
{
String str;
String couponReciept;
String coupontest;
int couponnumber;
int marketnumber;
double price;
double bill = 0; //<---logical error "local field"
DecimalFormat output = new DecimalFormat("0.00");
index = grocery.getSelectedIndex();
price = groceryprice[index];
System.out.print("Cost = " + price + "$ ");
str = quanityText.getText();
marketnumber = Integer.parseInt(str);
bill = marketnumber * price;
if (couponyes.isSelected())
{
coupontest = couponText.getText();
couponnumber = Integer.parseInt(coupontest);
bill = bill - couponnumber;
}
...
修正代码
...
double bill = 0;
public void actionPerformed(ActionEvent e)
{
String str;
String couponReciept;
String coupontest;
int couponnumber;
int marketnumber;
double price;
DecimalFormat output = new DecimalFormat("0.00");
index = grocery.getSelectedIndex();
price = groceryprice[index];
System.out.print("Cost = " + price + "$ ");
str = quanityText.getText();
marketnumber = Integer.parseInt(str);
bill = marketnumber * price;
if (couponyes.isSelected())
{
coupontest = couponText.getText();
couponnumber = Integer.parseInt(coupontest);
bill = bill - couponnumber;
}
...
我不确定它会修复整个代码;但在某些方面,这是解决或多或少的具体问题的方法
祝你好运