首页 > 解决方案 > 我如何计算我的 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 美元

我希望你能帮我解决这个问题。谢谢你。

标签: javaoopmethods

解决方案


你的二传手有一个明显的问题:

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, ... 变量。其他变量也是如此。


推荐阅读