奇怪的JAVA编译错误?

时间:2012-02-28 21:22:27

标签: java

我需要在前面加上我不允许在课堂上使用IDE,我必须使用TextPad进行编译和运行。任何帮助将不胜感激。

有三个文件,一个驱动程序文件和另外两个类文件。 Lab4文件是驱动程序文件,类文件是“ITEM”和“NAME”。

编译驱动程序“Lab4”文件时出现以下错误。

     F:\Java\Lab 4A\Lab4.java:86: error: cannot find symbol
        System.out.println ("Manufacturer's Name: " + item.manName());
                                                      ^
      symbol:   method manName()
      location: variable item of type Item

“Lab4”文件的代码位于:

    import java.util.Scanner;

    public class Lab4
    {
     public static void main (String[] args)
    {
          String firstName = "";
          String lastName = "";
          String manName = "";
          float cost = 0.00f;
          int itemNum = 0;


        // Instantiate class files
        // Variables are declared because variables are expected in name.java file
        Name name = new Name("Bob", "Jones");
        Item item = new Item(985534, 9.99f, "Lewis Mfg");


        // Create a scanner
        Scanner input = new Scanner(System.in);


        // Recieve user input for variables
        System.out.println ("Please enter the customer's first name: ");
        firstName = input.next();
        while (firstName.length() < 1)
            {
            System.out.println ("Enter a valid first name");
            firstName = input.next();
            }
            name.setfirstName(firstName);
            firstName = "";

        System.out.println ("Please enter the customer's last name: ");
        lastName = input.next();
        while (lastName.length() < 1)
            {
            System.out.println ("Enter a valid last name: ");
            lastName = input.next();
            }
            name.setlastName(lastName);
            lastName = "";

        System.out.println ("Please enter the item number: ");
        itemNum = input.nextInt();
        while (itemNum < 1)
            {
            System.out.println ("Enter a valid item number: ");
            itemNum = input.nextInt();
            }
            item.setitemNum(itemNum);
            itemNum = 0;

        System.out.println ("Please enter the item's cost (including decimal): ");
        cost = input.nextFloat();
        while (cost < 1)
            {
            System.out.println ("Enter a valid cost amount: ");
            cost = input.nextFloat();
            }
        item.setcost(cost);
            cost = 0;

        System.out.println ("Please enter the manufacturer's name: ");
        manName = input.next();
        while (manName.length() < 1)
            {
            System.out.println ("Enter a valid manufacturer's name");
            manName = input.next();
            }
            item.setmanName(manName);
            manName = "";


        // Outputs the data entered by the user and stored in the other classes,               Name and Item
           System.out.println ("First Name: " + name.getfirstName() + "\n");
           System.out.println ("Last Name: " + name.getlastName() + "\n");
           System.out.println ("Item Number: " + item.getitemNum() + "\n");
       System.out.println ("Item Cost: " + item.getcost() + "\n");
       System.out.println ("Manufacturer's Name: " + item.manName());

        System.out.println ("\n\nThe customer and item information have been          entered.\n");

     }
     }

错误中引用的“ITEM”文件的代码位于:

     public class Item
{
    // Create private variables that cannot be accessed directly
     private int itemNum;
     private float cost;
     private String manName;

     // Create instances of the private variables that can be set by the methods
     public Item (int itemNum, float cost, String manName)
            {
            this.itemNum = itemNum;
            this.cost = cost;
        this.manName = manName;
        }

    // Gets the variable values from the user via the driver class
    public int getitemNum()
        {
        return itemNum;
        }

    public float getcost()
        {
        return cost;
        }

    public String getmanName()
        {
        return manName;
        }


    // Sets the variable amounts into the private variables after validating the input     form
    public boolean setitemNum(int itemNum)
        {
        if (itemNum < 0)
        return false;
        else
        this.itemNum = itemNum;
        return true;
        }

    public boolean setcost(float cost)
        {
        if (cost < 0)
        return false;
        else
        this.cost = cost;
        return true;
        }

    public boolean setmanName(String manName)
        {
        if (manName.length() < 0)
        return false;
        else
            this.manName = manName;
        return true;
        }
    }

任何帮助都会很棒!

5 个答案:

答案 0 :(得分:8)

您为方法getmanName()命名,但在错误行上调用manName()

答案 1 :(得分:2)

你有一个简单的拼写错误:

您需要item.getmanName()而不是manName()

答案 2 :(得分:2)

manName是一个属性,您将其引用为方法manName()

由于manNameprivate,您必须使用名为getmanName()的访问者

根据您的代码{@ 1}}

给出正确的参考

根据Java的正确item.getmanName()命名约定,该方法的更好的惯用名称是getManName()

答案 3 :(得分:1)

您正在调用manName(),但您的方法是getmanName()

答案 4 :(得分:0)

据我所知,manName类中没有Item方法。 Getter方法称为getmanName。通常有一条规则告诉getter方法应该以 get 字开头,然后你应该放置你想要获得的类属性名。

将编译错误更改为:

System.out.println ("Manufacturer's Name: " + item.getmanName());

现在应该可以了。