【问题标题】:How do i calculate the subtotal for my java program?我如何计算我的 java 程序的小计?
【发布时间】:2021-05-26 06:51:57
【问题描述】:

我是 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

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

【问题讨论】:

  • java != javascript
  • 阅读本地、全局变量及其访问修饰符,然后了解如何访问它们。然后看一下参数,应该可以解决你的问题
  • @lyncx java 不支持全局变量
  • @aihyun public void setServCode (double code1) { code1 = servCode; } 这没有任何意义。您需要进行分配: servCode = code1; .其他二传手也是如此
  • @Stultuske 没错,他正在尝试全局访问不支持的变量。

标签: java oop methods


【解决方案1】:

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

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

【讨论】:

  • 我错过了什么吗,因为我找不到 OP 调用 setter 的引用,他正在尝试全局访问变量。我只能看到对 get 方法的调用
  • @lyncx 我错过了他的变量重复(也不是真正的全局方法,对于全局变量,只有一个变量声明)。
  • 我错过了他再次声明它的事实,尽管他正在采用全局方法,因为他没有设置变量而是试图从另一个类访问。但是您的编辑应该现在就可以工作了
猜你喜欢
  • 2015-08-07
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
相关资源
最近更新 更多