2016-12-06 60 views
1

我正在做一個任務,我對我被要求做的事感到困惑。規範是:混淆創建構造函數,方法和存儲數組的規範?

  • 創建一個FlashCard類,該類的構造函數需要2個字符串,一個用於提問,一個用於答案。 FlashCard應該有一個getQuestion和getAnswer方法。

所以他們要我創建一個構造函數,它需要兩個參數,一個用於提問,一個用於答案。然後他們要我創建一個getAnswer和getQuestion方法,其中包含eah flashcard的答案和問題。但是,如果閃卡包含兩個字符串,那麼這不意味着一個閃卡具有其中的答案和問題?這意味着我沒有得到答案,並得到問題的方法,因爲他們不能分開?

import java.util.ArrayList; 

public class FlashCard { 

     ArrayList<FlashCard> cardlist = new ArrayList<FlashCard>(); 


    FlashCard(String question, String answer) 
    { 

    } 


    public ArrayList<FlashCard> getQuestion() { 

    cardlist.add(new FlashCard("1Q - By what initials was Franklin Roosevelt better known?", "1A - FDR")); 
    cardlist.add(new FlashCard("2Q - Which number president was Franklin Roosevelt?", "2A - 32")); 
    cardlist.add(new FlashCard("3Q - Which state was Franklin Roosevelt3 born in?", "3A - New York")); 
    cardlist.add(new FlashCard("4Q - In which year did Roosevelt become Governor of New York?", "4A - 1929")); 
    cardlist.add(new FlashCard("5Q - What was the name of Franklin Roosevelt's wife?", "5A - Elenor")); 
    cardlist.add(new FlashCard("6Q - How many children did Franklin Roosevelt have?", "6A - 6")); 
    cardlist.add(new FlashCard("7Q - From which university did Franklin Roosevelt graduate with an A.B in history?", "7A - Harvard")); 
    cardlist.add(new FlashCard("8Q - What was the first name of Franklin Roosevelt's 5th cousin, who was also President?", "8A - Theodore")); 
    cardlist.add(new FlashCard("9Q - Which disease is believed to be the causes of Franklin Roosevelt's paralysis?", "9A - Polio")); 
    cardlist.add(new FlashCard("10Q - At what age did Franklin Roosevelt die?", "10A - 63")); 

    } 

    public ArrayList<FlashCard> getAnswer() { 

    cardlist.add(new FlashCard("1Q - By what initials was Franklin Roosevelt better known?", "1A - FDR")); 
    cardlist.add(new FlashCard("2Q - Which number president was Franklin Roosevelt?", "2A - 32")); 
    cardlist.add(new FlashCard("3Q - Which state was Franklin Roosevelt3 born in?", "3A - New York")); 
    cardlist.add(new FlashCard("4Q - In which year did Roosevelt become Governor of New York?", "4A - 1929")); 
    cardlist.add(new FlashCard("5Q - What was the name of Franklin Roosevelt's wife?", "5A - Elenor")); 
    cardlist.add(new FlashCard("6Q - How many children did Franklin Roosevelt have?", "6A - 6")); 
    cardlist.add(new FlashCard("7Q - From which university did Franklin Roosevelt graduate with an A.B in history?", "7A - Harvard")); 
    cardlist.add(new FlashCard("8Q - What was the first name of Franklin Roosevelt's 5th cousin, who was also President?", "8A - Theodore")); 
    cardlist.add(new FlashCard("9Q - Which disease is believed to be the causes of Franklin Roosevelt's paralysis?", "9A - Polio")); 
    cardlist.add(new FlashCard("10Q - At what age did Franklin Roosevelt die?", "10A - 63")); 

    } 

} 

他們還需要返回ArrayList<FlashCard>所以我真的很困惑,我將如何構建這個使得getQuestions()方法返回燒錄卡的問題相同的答案。任何幫助將非常感謝,謝謝。

+1

想想一個真正的閃存卡。它既有問題也有答案。它們是它的*屬性*。並且將「getQuestion」方法想象爲「向我展示問題方面」,而將「getAnswer」方法視爲「向我展示答案方」。該方法應該只顯示*特定卡的值*,而不是其他值。 – RealSkeptic

+0

''cardlist.add(新的FlashCard(「1Q-什麼是首字母是富蘭克林羅斯福更出名?」,「」));'適合'getQuestionr()'和其他方式來回答? – Alan

+0

「我正在做一項任務,我對我被要求做的事情感到困惑:「問問你的講師或老師,嚴肅地說,他們很樂意幫助消除任何含糊之處,儘管在這種情況下,再問一次,未來很有可能我們不會比你有更多的洞察力。 – Michael

回答

1

這聽起來很可笑,所以我採取了你的要求,並模擬了微型閃存卡遊戲,也許它將會更容易理解您對示例的要求。

public class PlaygroundMain { 

     public static void main(String... args) { 
       Scanner sc = new Scanner(System.in); 
       PlaygroundMain gameDemo = new PlaygroundMain(); 
       System.out.println("Shuffling the cards"); 
       List<FlashCard> shuffledDeck = gameDemo.getQuestions(); 
       Collections.shuffle(shuffledDeck); 
       System.out.println("Cards Shuffled!"); 
       int score = 0; 

       for (FlashCard card : shuffledDeck) { 
         System.out.println(card.getQuestion()); 
         final String answer = sc.nextLine(); 

         if (answer.trim().equals(card.getAnswer())) { 
           System.out.println("You have answered right!, giving you a point"); 
           score++; 
         } else { 
           System.out.println("Sorry, you have answered wrong, the correct answer is: "+card.getAnswer()); 
         } 

         if (shuffledDeck.indexOf(card) != shuffledDeck.size()-1) { 
           System.out.println("Preparing next question..."); 
         } 
       } 

       System.out.println("Your score is: "+score); 
     } 


     public List<FlashCard> getQuestions() { 
       FlashCard c1 = new FlashCard("Q1: What is my name?", "Alfred"); 
       FlashCard c2 = new FlashCard("Q2: What is my age?", "26"); 
       return Arrays.asList(c1, c2); 
     } 

     class FlashCard { 
       private final String question; 
       private final String answer; 

       public FlashCard(String question, String answer) { 
         this.question = question; 
         this.answer = answer; 
       } 


       public String getQuestion() { 
         return question; 
       } 

       public String getAnswer() { 
         return answer; 
       } 

     } 
} 
0

讓我們試着將其清除:

但如果燒錄卡包含兩個字符串,然後woudn't是不是意味着一個燒錄卡同時具有內做出了回答和問題? 是的。該班有兩名成員。問題和答案。當構造函數被調用時,它們在同一時刻綁定在一起。可以並且應該是最終的。像在private final String question;

這將意味着我coudn't得到答案,並得到問題的方法,因爲他們不能分開? 不。該類有兩種方法,可以隨時調用。他們隨時都會給出相同的結果。就像在public String getQuestion(){ return question; }

你的代碼唯一的問題是你創建兩次FlashCards列表。不要那樣做。將代碼移到單個點中。也許把它放在一個包含FlashCards「Deck」列表的單獨的類中。所以當你創建一個'Deck'時,它會包含所有FlashCards的列表。

1

這意味着FlashCard有一個問題和一個答案。

這兩個構造函數參數都應該是存儲在對象中的。這是它的屬性

getQuestiongetAnswer方法干將,他們簡單地返回相應的屬性,這裏的燒錄卡獨特的問題/答案。

但是,如果閃卡包含兩個字符串,那麼這是不是意味着一個閃卡具有它的答案和問題?

是的,它的確,卡的目的。如果不能解決問題,你怎麼能得到答案?

這將意味着我coudn't得到答案,並得到問題的方法,因爲他們不能分開?

那麼,答案和問題不能分開,因爲它們都包含在一個FlashCard對象中。但是,您可以撥打getQuestion而不致電getAnswer(也可以採用其他方式)。

您在getQuestion方法中輸入的代碼不應該在此類中,對於cardList的聲明也是如此。列表包含FlashCard,但FlashCard不應包含卡片列表。該代碼是正確的創建多個閃存卡。你可以把它放在別的地方,就像你main方法或在辦理卡列表中的其他類:

public static void main(String [] args) 
{ 
    ArrayList<FlashCard> cardlist = new ArrayList<FlashCard>(); 

    cardlist.add(new FlashCard("1Q - By what initials was Franklin Roosevelt better known?", "1A - FDR")); 
    cardlist.add(new FlashCard("2Q - Which number president was Franklin Roosevelt?", "2A - 32")); 
    cardlist.add(new FlashCard("3Q - Which state was Franklin Roosevelt3 born in?", "3A - New York")); 

    System.out.println("first question: "+cardList.get(0).getQuestion()+ " - answer: "+cardList.get(0).getAnswer()); 
}