2016-08-22 145 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... 

}