java - 我如何计算我的 java 程序的小计?
问题描述
我是java编程的初学者,我对java oop不太熟悉。我可以在没有 java oop 的情况下做到这一点,但是该项目要求我使用 oop。我必须创建一个沙龙系统,根据从沙龙购买的服务和产品计算小计。
这就是我现在所做的:
public class main1
{
int servCode, prodCode, servQuantity, prodQuantity;
double servPrice, prodPrice, subtotal, tax, total;
String servName, prodName;
public void menu()
{
System.out.println(" PURPLE HAIR SALON ");
System.out.println("\t -------------------------------------------------------");
System.out.println();
System.out.println("\t SERVICE CODE \tSERVICES \tPRICE");
System.out.println("\t 101 \tHair Cut \t$ 35");
System.out.println("\t 102 \tHair Wash \t$ 25");
System.out.println("\t 103 \tHair Coloring \t$ 65");
System.out.println("\t 104 \tHair Treatment \t$ 58");
System.out.println("\t 105 \tDigital Perm \t$ 108");
System.out.println("\t 106 \tIon Perm \t$ 95");
System.out.println("\t 107 \tRebonding \t$ 88");
System.out.println();
System.out.println("\t PRODUCT CODE \tPRODUCTS \tPRICE");
System.out.println("\t 201 \tShampoo \t$ 18");
System.out.println("\t 202 \tConditioner \t$ 17");
System.out.println("\t 203 \tHair Mask \t$ 28");
System.out.println();
System.out.println("\t -------------------------------------------------------");
}
public void setServCode (double code1)
{
code1 = servCode;
}
public void setProdCode (double code2)
{
code2 = prodCode;
}
public void ServCode (double code1)
{
if (code1 == 101)
servPrice = 35;
else if (code1 == 102)
servPrice = 25;
else if (code1 == 103)
servPrice = 65;
else if (code1 == 104)
servPrice = 58;
else if (code1 == 105)
servPrice = 108;
else if (code1 == 106)
servPrice = 95;
else if (code1 == 107)
servPrice = 88;
else
System.out.println("Invalid Service Code");
}
public void ProdCode (double code2)
{
if (code2 == 201)
prodPrice = 18;
else if (code2 == 202)
prodPrice = 17;
else if (code2 == 203)
prodPrice = 28;
else
System.out.println("Invalid Product Code");
}
public int getServCode()
{
return servCode;
}
public int getProdCode()
{
return prodCode;
}
public void setServQuantity (int quantity1)
{
servQuantity = quantity1;
}
public void setProdQuantity (int quantity2)
{
prodQuantity = quantity2;
}
public int getServQuanity()
{
return servQuantity;
}
public int getProdQuantity()
{
return prodQuantity;
}
public void setSubtotal (double subtotal)
{
this.subtotal = subtotal;
}
public void setTax (double tax)
{
this.tax = tax;
}
public void setTotal (double total)
{
this.total = total;
}
public void Subtotal (double subtotal)
{
subtotal = (servPrice * servQuantity) + (prodPrice * prodQuantity);
}
public double getSubtotal()
{
return subtotal;
}
public double getTax()
{
tax = 0.06 * subtotal;
return tax;
}
public double getTotal()
{
total = subtotal + tax;
return total;
}
}
import java.util.*;
public class main1demo
{
public static void main (String [] args)
{
Scanner sc = new Scanner (System.in);
int servCode, prodCode, servQuantity, prodQuantity, o;
String servName, prodName;
double servPrice, prodPrice, subtotal = 0, tax = 0, total = 0;
main1 obj = new main1();
obj.menu();
System.out.println();
System.out.print("\tENTER SERVICE CODE : ");
servCode = sc.nextInt();
System.out.println();
System.out.print("\tENTER QUANTITY : ");
servQuantity = sc.nextInt();
System.out.println();
System.out.print("\tENTER PRODUCT CODE : ");
prodCode = sc.nextInt();
System.out.println();
System.out.print("\tENTER QUANTITY : ");
prodQuantity = sc.nextInt();
System.out.println();
System.out.println("\tSUBTOTAL : $ " + obj.getSubtotal());
System.out.println("\tTAX : $ " + obj.getTax());
System.out.println("\tTOTAL : $ " + obj.getTotal());
}
}
我想找出小计、税收和总计,但它们的输出显示为 0。这就是输出的样子:
小计:0.0 美元 税:0.0 美元 总计:0.0 美元
我希望你能帮我解决这个问题。谢谢你。
解决方案
你的二传手有一个明显的问题:
public void setServCode (double code1)
{
code1 = servCode;
}
code1 是您的局部变量,您实际上并没有更新实例变量的值。
Java中的赋值如下:
variable = value;
因此,您需要像这样更改您的设置器:
public void setServCode (double code1)
{
servCode = code1;
}
编辑:
第二个问题,仅仅因为你有两个同名的变量(在不同的类中),并不会使它们成为同一个变量。
在您的主要方法中,您需要更改以下内容:
servCode = sc.nextInt();
至:
obj.setServCode(sc.nextInt());
并删除您的主要方法中的本地 servCode, ... 变量。其他变量也是如此。
推荐阅读
- c# - 如何将存储在 VARBINARY 列中的文件保存到文件夹中?
- python - 两个列表之间的差异大于两个列表中元素数量的差异
- sql - 长SQL子查询麻烦
- typescript - 如何在 TestCafe 中全局处理错误
- reactjs - 反应本机克隆元素正在失去价值参考
- android - RecyclerView中第一个/最后一个可见项目的回调?
- excel - VBA:分配给对象的宏,单击以执行操作时,它会进入代码并触发 - 参数数量错误或属性分配无效
- r - R:我如何交叉引用 data.frames 的差异?
- python - 有状态的双向 LSTM 批量大小问题
- google-apps-script - 图纸尺寸外的目标范围坐标