Java作业类构造函数中的错误消息。请帮忙

时间:2012-10-07 13:45:45

标签: java constructor accessor

我从我的代码中收到以下错误消息,

找不到符号 - 变量jobName

我们必须使用两个简单的字段Job name和job length创建一个名为Job的类。

我不明白为什么我收到此错误消息。代码如下。提前感谢您的帮助。

import java.util.ArrayList;
public class Job
  {
 // instance variables - replace the example below with your own
 private String name;
 private int duration;
 private boolean isComplete;

/**
 * Constructor for objects of class Job
 */
public Job(String name, int duration)
{
    // initialise instance variables
    jobName = name;
    jobDuration = duration;


}
/**
 * Accessor method for job name. 
 * 
 * @param  y   a sample parameter for a method
 * @return     value of job. 
 */
public String getName() {
    {
        // put your code here
        return jobName;
    }
}

/**
 * Accessor method for job duration.
 * 
 * @param y a sample parameter for a method
 * @return value of job duration.
 * 
 */

public int getDuration() {
    {
        return jobDuration;
    }

}

/**
 * Run method which prints. 
 * 
 * @param y a sample parameter for a method. 
 * @return 
 */

public void run(String name, int duration) {
    if (isComplete) 
    {
        System.out.print("JOB COMPLETE" + jobName);            
    }

 }
}

6 个答案:

答案 0 :(得分:1)

而不是jobNamejobDuration,您需要说this.namethis.duration,因为这就是这些字段的名称。

答案 1 :(得分:0)

您将私人数据成员命名为“name”,但您仍将其称为“jobName”。

答案 2 :(得分:0)

您的构造函数正在使用名为jobNamejobDuration的新变量,该变量未定义。纠正如下:

    /**
     * Constructor for objects of class Job
     */
    public Job(String name, int duration){
        // initialise instance variables
        name = name;
        duration = duration;
    }

最好在参数和成员变量中使用不同的名称,或者在成员变量之前使用this,例如。

    /**
     * Constructor for objects of class Job
     */
    public Job(String aName, int aDuration) {
        // initialise instance variables
        name = aName;
        duration = aDuration;
    }

    /**
     * Constructor for objects of class Job
     */
    public Job(String name, int duration)   {
        // initialise instance variables
        this.name = name;
        this.duration = duration;
    }

答案 3 :(得分:0)

更改此

private String name;
private int duration;

到此:

private String jobName;
private int jobDuration;

答案 4 :(得分:0)

因为您的班级中没有jobName变量,我认为您已将其命名为name

答案 5 :(得分:0)

你已经给了,

private String name;
private int duration;

您正在使用未定义的jobName, jobDuration。请声明这些或使用,

this.name = name;
this.duration = duration;