【问题标题】:Cannot find symbol, Cannot figure out why this error is occurring [closed]找不到符号,无法弄清楚为什么会发生此错误[关闭]
【发布时间】:2013-06-09 07:31:21
【问题描述】:

链接到超类的变量时: 名 姓 街道地址 邮政编码 电话号码

代码可以正常工作,但是如果我添加子类的三个额外变量 部门名称 税号 年薪

变量找不到,bluej 但是,VISUALLY 连接到子类。

我会删除额外的变量,但如果我这样做,我的代码将无法编译,所以现在,变量存在但没有完全使用。

代码:

数组列表

private ArrayList<Person> myShopEmployee = new ArrayList<Person>();
    private JFrame frame;

    private JLabel labFirstName;   
    private JTextField txtFirstName;

    private JLabel labLastName;   
    private JTextField txtLastName;

    private JLabel labStreetAddress;   
    private JTextField txtStreetAddress;

    private JLabel labPostCode;   
    private JTextField txtPostCode;

    private JLabel labPhoneNumb;   
    private JTextField txtPhoneNumb;

    private JLabel labDepartmentName;   
    private JTextField txtDepartmentName;

    private JLabel labTFN;   
    private JTextField txtTFN;

    private JLabel labAnnualSalary;   
    private JTextField txtAnnualSalary;

    private int index = 0;

如果我从这行代码中删除额外的变量,并且上面的数组我的代码不会编译。

class creatingShopEmployeeListener implements ActionListener 
        {
            public void actionPerformed(ActionEvent event)
            {
                JOptionPane.showMessageDialog(frame,
                                            "example", JOptionPane.ERROR_MESSAGE);

                                          ShopEmployee newShopEmployee = new ShopEmployee (txtFirstName.getText(),txtLastName.getText(),txtStreetAddress.getText(),txtPostCode.getText(),txtPhoneNumb.getText(),txtDepartmentName.getText(),txtTFN.getText(),txtAnnualSalary.getText());
                                          myShopEmployee.add(newShopEmployee);
                JOptionPane.showMessageDialog(frame,
                                            "ShopEmployee has been created" );


            }
        }

如果上述两个代码示例保持原样,则会发生找不到符号错误。 (这里我有 TFN,但是三个变量中的任何一个都会发生错误。)

 class seeShopEmployeeListener implements ActionListener 
        {
            public void actionPerformed(ActionEvent event)
            {
                     if (myShopEmployee.size() > 0) 
                     {

                         ShopEmployee curShopEmployee = (ShopEmployee) myShopEmployee.get(index);
                         txtFirstName.setText(curShopEmployee.getFirstName());
                         txtLastName.setText(curShopEmployee.getLastName() );
                         txtStreetAddress.setText(curShopEmployee.getStreetAddress() );
                         txtPostCode.setText(curShopEmployee.getPostCode() );
                         txtPhoneNumb.setText(curShopEmployee.getPhoneNumb() );
                         txtTFN.setText(curShopEmployee.getTFN() );
                     if ( index < myShopEmployee.size() -1 ) { index ++; }
                     else {
                            JOptionPane.showMessageDialog(frame,
                                "No ShopEmployee" );
                            } 
                }
            }
        }

最后是 ShopEmployee 类

public class ShopEmployee extends Person
{
    //creating variables
    private String departmentName;
    private String TFN, annualSalary;
    public ShopEmployee()//ShopEmployee constructor
    {

        //setting values for the new variables
        departmentName = "";
        TFN = "";
        annualSalary = "";

    }
    public ShopEmployee(String myFirstName, String myLastName, String myStreetAddress, String myPostCode, String myPhoneNumb, String myDepartmentName, String myTFN, String myAnnualSalary)//ShopEmployee constructor which contains these variables
    {

        super(myFirstName,myLastName,myStreetAddress,myPostCode,myPhoneNumb);
        departmentName = myDepartmentName;
        TFN = myTFN;
        annualSalary = myAnnualSalary;

    }
    //setting up the variables
     public void setDepartmentName(String myDepartmentName)
    {
        setDepartmentName(myDepartmentName);
    }
    public void setTFN(String myTFN)
    {
        setTFN(myTFN);
    }
    public void setAnnualSalary(String myAnnualSalary)
    {
        setAnnualSalary(myAnnualSalary);
    }
    public String toString()
    {
        return super.toString() + ", TFN is " + TFN + ", Annual Salary is " + annualSalary + ", and Department Name is " + departmentName;//returns the super variable string which includes the name phone number ect then adds on the new variables
    }
}

谢谢。任何帮助表示赞赏。

【问题讨论】:

  • 您不认为确切的错误消息可以帮助找出问题所在吗?
  • 找不到符号方法getTFN()
  • 这不是确切的错误消息。确切的错误消息说明错误发生在哪个文件的哪一行。

标签: java bluej


【解决方案1】:

您尚未为新字段 TFN 和部门名称添加 getter。由于这两个变量被声明为私有,因此也不能直接访问它们。您正在尝试调用 getter

curShopEmployee.getTFN()

但您的课程中不存在该方法。

【讨论】:

  • 我认为这行得通,我回过头来为 departmentName 变量设置了一个 get 并且错误没有出现,我会为所有 3 做这件事并尝试让它们工作,然后回复你.谢谢
  • 好的,谢谢,这有效,解决了 2 个问题,额外的变量在 GUI 中,它不会因为缺少变量而崩溃,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 2017-06-15
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多