2016-08-22 141 views
0

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

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(); 
    } 
} 

这是我到目前为止。我挣扎于第二个构造函数,它应该将调查标题设置为传递给构造函数的值。

+1

欢迎来到Stack Overflow。我们需要更多信息来帮助您。你的问题是什么?你在挣扎着什么? –

+0

@ Code-Apprentice:它确实在最底层说。 –

+1

@ T.J.Crowder“我正在与第二个构造者苦苦挣扎”是一个陈述,而不是一个问题。 –

回答

0

根据您的要求下面的下面的代码应该工作。

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

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

-1

第二个构造函数应接受调查标题的字符串值。

您需要将调查标题字段设置为String值,该值作为构造函数的参数给出。如果你不知道如何做到这一点,我建议你对Java中的赋值运算符进行一些研究。

0

我想这就是你想要达到的目的,在阅读你的代码后,我明白你正在学习如何使用getter和setter构造函数,你遇到的问题是你没有声明物业surveyTitle

` 
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

谢谢!我现在知道了。我只需添加获得调查标题! – Amanda

+0

您好,您可以接受它作为回答或投票解决方案,如果它解决了手头的问题 –

0

第一类变量定义级别私人

private String surveyTitle; 
private static int respondentID 

,并通过其干将访问它们和setter

第二个构造函数将接受调查的标题应该只分配了其先前宣布的私有变量,让你消气

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

}

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... 

}