Java库存程序问题

我有2个错误消息,我无法弄清楚它要求我做什么。 错误是:

DesktopInventory ProgramInventoryPart1.java:93: cannot find symbol
symbol  : variable printer
location: class InventoryPart1
        System.out.println("Item Number: " + printer.getItemNumber());

DesktopInventory ProgramInventoryPart1.java:95: cannot find symbol
symbol  : variable printer`enter code here`
location: class InventoryPart1
        System.out.println("Product Name: " + printer.getProductName());

目前的代码是

import java.text.NumberFormat;
import java.util.locale;
import java.util.Scanner;

class Printer {

    private String itemNumber;
    private String productName;
    private double units;
    private double unitPrice;
    private double unitsTotal;
    //constructor
    public Printer (String itemNumber, String productName, double units, double unitsTotal) {
        setItemNumber(itemNumber);
        setProductName(productName);
        setUnits(units);
        setUnitPrice(unitPrice);
        unitsTotal = units ++;
    }

    //accessor methods for class variables
    public String getItemNumber () {
        return itemNumber;
    }

    public void setItemNumber (String itemNumber) {
        this.itemNumber = itemNumber;
    }

    public String getProductName () {
        return productName;
    }

    public void setProductName (String productName) {
        this.productName = productName;
    }

    public double getUnits () {
        return units;
    }

    public void setUnits (double units) {
        this.units = units;
    }

    public double getUnitPrice () {
        return unitPrice;
    }

    public void setUnitPrice (double unitPrice) {
        this.unitPrice = units * unitPrice;
    }

    public double getUnitsTotal () {
        return unitsTotal;
    }

    public void setUnitsTotal (double unitsTotal) {
        this.unitsTotal = units ++;
    }


}

public class InventoryPart1 {

    public static void main (String args[]) {


        int units;

        double unitPrice;

        double unitsTotal;
        unitsTotal = units ++;

        double unitsPrice;
        unitsPrice = units * unitPrice;

        double unitsTotalPrice;
        unitsTotalPrice = unitsTotal * unitPrice;

        double totalInventory;
        totalInventory = unitsTotal * unitsTotalPrice;


        NumberFormat nf = NumberFormat. getCurrencyInstance(Locale.US);

        //create an instance of the Printer class
        Printer epson = new Printer ("Epson579", "All In One", 2, 50.99);

        //use the methods from class Printer to output the inventory details.
        System.out.println("Item Number: " + printer.getItemNumber());

        System.out.println("Product Name: " + printer.getProductName());

        System.out.print("Number of Units: ");
        System.out.println(nf.format(units));

        System.out.print("Unit Price: ");
        System.out.println(nf.format(unitPrice));

        System.out.print("Units Total: ");
        System.out.println(nf.format(unitsTotal));

        System.out.print("Units Total Price: ");
        System.out.println(nf.format(unitsTotalPrice));

        System.out.print("Total Inventory: ");
        System.out.println(nf.format(totalInventory));
    }

}

对于这个网站来说很抱歉,并且仍然试图通过输入整个代码来解决问题,


啊,你没有声明一个叫做printer的变量。 你称它为epson


您的InventoryPart1类存在一些问题,直到我在main的开始初始化变量时才会编译。 这是一个很好的习惯,也需要使用'epson'而不是'printer':

public class InventoryPart1 {

    public static void main (String args[]) {


        int units = 0;

        double unitPrice = 0;

        double unitsTotal = units++;

        double unitsPrice = 0;
        unitsPrice = units * unitPrice;

        double unitsTotalPrice;
        unitsTotalPrice = unitsTotal * unitPrice;

        double totalInventory;
        totalInventory = unitsTotal * unitsTotalPrice;


        NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);

        //create an instance of the Printer class
        Printer epson = new Printer ("Epson579", "All In One", 2, 50.99);

        //use the methods from class Printer to output the inventory details.
        System.out.println("Item Number: " + epson.getItemNumber());

        System.out.println("Product Name: " + epson.getProductName());

        System.out.print("Number of Units: ");
        System.out.println(nf.format(units));

        System.out.print("Unit Price: ");
        System.out.println(nf.format(unitPrice));

        System.out.print("Units Total: ");
        System.out.println(nf.format(unitsTotal));

        System.out.print("Units Total Price: ");
        System.out.println(nf.format(unitsTotalPrice));

        System.out.print("Total Inventory: ");
        System.out.println(nf.format(totalInventory));
    }
}

几个问题...

  • 实例名称应该是打印机,而不是epson
  • 单元总数不应该是一个静态字段而不是实例变量
  • 或者在使用它们之前初始化所有局部变量或者删除它们,因为您可以使用Printer类中的成员方法计算统计信息
  • 显示时使用Printer类中的所有成员方法而不是局部变量
  • 使用NumberFormat.getIntegerInstance格式化整数,因为NumberFormat.getCurrencyInstance用于格式化货币字段。
  • 您需要重新考虑单位,unitsTotal,单位价格和库存字段。

    import java.text.NumberFormat;
    import java.util.Locale;
    
    class Printer {
    
        private String itemNumber;
        private String productName;
        private double units;
        private double unitPrice;
        private static double unitsTotal;
    
        // constructor
        public Printer(String itemNumber, String productName, double units, double unitPrice) {
            setItemNumber(itemNumber);
            setProductName(productName);
            setUnits(units);
            setUnitPrice(unitPrice);
            unitsTotal += units;
        }
    
        // accessor methods for class variables
        public String getItemNumber() {
            return itemNumber;
        }
    
        public void setItemNumber(String itemNumber) {
            this.itemNumber = itemNumber;
        }
    
        public String getProductName() {
            return productName;
        }
    
        public void setProductName(String productName) {
            this.productName = productName;
        }
    
        public double getUnits() {
            return units;
        }
    
        public void setUnits(double units) {
            this.units = units;
        }
    
        public double getUnitPrice() {
            return unitPrice;
        }
    
        public void setUnitPrice(double unitPrice) {
            this.unitPrice = unitPrice;
        }
    
        public static double getUnitsTotal() {
            return unitsTotal;
        }
    }
    
    public class InventoryPart1 {
    
        public static void main(String args[]) {
            NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
            NumberFormat inf = NumberFormat.getIntegerInstance(Locale.US);
    
            // create an instance of the Printer class
            Printer printer = new Printer("Epson579", "All In One", 2, 50.99);
    
            // use the methods from class Printer to output the inventory details.
            System.out.println("Item Number      : " + printer.getItemNumber());
            System.out.println("Product Name     : " + printer.getProductName());
            System.out.println("Number of Units  : " + inf.format(printer.getUnits()));
            System.out.println("Unit Price       : " + nf.format(printer.getUnitPrice()));
            System.out.println("Units Total      : " + inf.format(printer.getUnitsTotal()));
            System.out.println("Units Total Price: " + nf.format(printer.getUnitPrice() * Printer.getUnitsTotal()));
            System.out.println("Total Inventory  : " + inf.format(Printer.getUnitsTotal()));
        }
    }
    

    样品运行:

    Item Number      : Epson579
    Product Name     : All In One
    Number of Units  : 2
    Unit Price       : $50.99
    Units Total      : 2
    Units Total Price: $101.98
    Total Inventory  : 2
    
    链接地址: http://www.djcxy.com/p/68219.html

    上一篇: Java Inventory Program problems

    下一篇: Use of the term "Abstract Syntax Tree"