我正在做一项任务,我对我被要求做的事感到困惑。规范是:
所以他们希望我创建一个构造函数,它有两个参数,一个用于问题,一个用于答案。然后他们希望我创建一个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()
方法返回flashcard问题的答案相同。非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
这意味着FlashCard
只有一个问题和一个答案。
两个构造函数参数都应存储在FlashCard
对象中。这是属性。
getQuestion
和getAnswer
方法是 getters ,它们只返回相应的属性,这里是FlashCard唯一的问题/答案。
但是如果闪卡包含两个字符串,那么这不意味着一张闪存卡中有答案和问题吗?
是的,这是卡的目的。如果它不受问题约束,你怎么能得到答案呢?
这意味着我没有得到答案并得到问题方法,因为他们不能分开?
嗯,答案和问题不能分开,因为它们都包含在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());
}
答案 1 :(得分: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;
}
}
}
答案 2 :(得分:0)
让我们试着清除它:
但如果闪卡包含两个字符串,那么这并不意味着一个闪存卡中有答案和问题吗?
是。该班有两名成员。问题和答案。它们在调用构造函数的同一时刻绑定在一起。可能而且应该是最终的。就像private final String question;
这意味着我不能得到答案并得到问题方法,因为他们不能分开?
不。该类有两种方法,可以随时调用。他们随时都会给出相同的结果。就像public String getQuestion(){ return question; }
您的代码唯一的问题是您创建了两次FlashCards列表。不要那样做。将代码移动到单个点。也许放在一个单独的类中,其中包含FlashCards“Deck”列表。因此,当您创建“Deck”时,它包含所有FlashCards的列表。