2012-02-28 155 views
1

我需要在此前言,我不允许在类中使用IDE,所以我必须使用TextPad进行编译和运行。任何帮助将不胜感激。奇怪的JAVA编译错误?

有三个文件,一个驱动程序文件和两个其他类文件。 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; 
     } 
    } 

任何帮助都会很棒!

+1

你可能想要'item.getmanName()',而不是'item.manName()'。 – birryree 2012-02-28 21:24:37

回答

8

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

2

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

你想item.getmanName()而不是manName()

2

manName是一个属性,你引用它作为一种方法manName()

因为manNameprivate你必须使用您所称为的访问者getmanName()

给出您的鳕鱼的适当参考e将是item.getmanName()

该方法的更好的惯用名称将是getManName()继适当的UpperCamelCase命名约定为Java。

1

要调用manName(),但你的方法是getmanName()

0

至于我可以看到有在Item类没有manName方法。 Getter方法称为getmanName。通常有一条规则,告诉getter方法应该以获得字开始,在此之后,您应该放置您想获得值的类属性名称。

行更改,让编译错误:

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

现在,它应该工作。