构造函数Java编程

时间:2016-08-22 17:37:55

标签: java constructor

Survey类将有一个静态类变量,用于存储当前响应者的ID。当受访者完成调查时,此值将增加1。 Survey类将有一个实例变量来保存调查的标题。 Survey类应该有两个重载的构造函数。 第一个构造函数应该不带参数。它应将调查标题设置为默认值“客户调查”。 第二个构造函数应该接受调查标题的String值。它应该将静态响应者ID重置为零。它应该将调查标题设置为传递给构造函数的值。 调查类应该有一个generateRespondentId()方法,该方法返回响应者ID的下一个值。此方法应将响应者ID的静态实例变量增加一个。

public class Survey {
    String surveyTitle = "";

    static int respondentID = 0;

    static int generateRespondentID(){
        return ++respondentID;    
    }

    public Survey(){
        surveyTitle = "Customer Survey";
    }

    public Survey(String newSurveyTitle){
        respondentID=0;

    }

    public static void main(String[] args) {
        Survey s = new Survey();
        System.out.println(s.getSurveyTitle());
        System.out.println(s.generateRespondentID());
        System.out.println();

        Survey s2 = new Survey("My Survey");
        System.out.println(s2.getSurveyTitle());
        System.out.println(s2.generateRespondentID());
        System.out.println();
        System.out.println(s2.generateRespondentID());
        System.out.println();
    }
}

这是我到目前为止所拥有的。我正在努力与第二个构造函数,它应该将调查标题设置为传递给构造函数的值。

5 个答案:

答案 0 :(得分:0)

我想这是你想要实现的,在阅读完你的代码之后,我能够理解你正在尝试学习如何使用带有getter和setter的Constructors,你遇到的问题是你没有声明财产调查标题

`
public class Survey {
private String surveyTitle;

public String getSurveyTitle() {
    return surveyTitle;
}
static int respondentID = 0;
static int generateRespondentID(){
    return ++respondentID;    
}
public Survey(String surveyTitle) {
    this.surveyTitle = surveyTitle;
}

public Survey() {
    surveyTitle = "Customer Survey";
}

   public static void main(String[] args) {
   Survey s = new Survey();
   System.out.println(s.getSurveyTitle());
   System.out.println(Survey.generateRespondentID());
   System.out.println();

   Survey s2 = new Survey("My Survey");
   System.out.println(s2.getSurveyTitle());
   System.out.println(s2.generateRespondentID());
   System.out.println();
   System.out.println(s2.generateRespondentID());
   System.out.println();
 }
}

`

答案 1 :(得分:0)

第一类变量定义为private private

private String surveyTitle;
private static int respondentID

并通过其getter和setter访问它们

第二个构造函数将收到调查的标题,只应分配其先前声明的私有变量并获取您的getter

public Survey(String newSurveyTitle){
this.surveyTitle = newSurveyTitle;
this.respondentID=0;

}

答案 2 :(得分:0)

一些注意事项:

  • 你应该链接你的构造函数
  • 你不应该使用静态来生成id,但如果你这样做,那就让它们保持线程安全

段:

public class Survey {
  static AtomicInteger respondentID = new AtomicInteger(0);
  final private String surveyTitle;

  public Survey(String surveyTitle) {
    this.surveyTitle = surveyTitle;
  }

  public Survey() {
    this("Customer Survey");
  }

  static int generateRespondentID() {
    return respondentID.incrementAndGet();
  }

  public String getSurveyTitle() {
    return surveyTitle;
  }

  //Other methods...

}

答案 3 :(得分:0)

根据您的要求,以下代码应该有效。

public Survey(String newSurveyTitle){
    respondentID=0;
    SurveyTitle = newSurveyTitle;
 }

您错过了在构造函数中设置调查标题的代码。

答案 4 :(得分:-1)

  

第二个构造函数应该接受调查标题的String值。

您需要将调查标题字段设置为String值,该值是作为构造函数的参数提供的。如果您不知道如何执行此操作,我建议您对Java中的赋值运算符进行一些研究。