Java 创建构造函数、方法和存储数组的混乱规范?
我正在做一项作业,我对别人要求我做什么感到困惑。规格为:Java 创建构造函数、方法和存储数组的混乱规范?,java,arrays,arraylist,methods,constructor,Java,Arrays,Arraylist,Methods,Constructor,我正在做一项作业,我对别人要求我做什么感到困惑。规格为: 创建一个FlashCard类,该类在其构造函数中包含两个字符串,一个用于问题,一个用于答案。抽认卡应具有getQuestion和getAnswer方法 所以他们想让我创建一个构造函数,它有两个参数,一个用于问题,一个用于答案。然后他们希望我创建一个getAnswer和getQuestion方法,其中包含eah flashcard的答案和问题。但是如果flashcard包含两个字符串,那么这不意味着一个flashcard中同时包含答案和
- 创建一个FlashCard类,该类在其构造函数中包含两个字符串,一个用于问题,一个用于答案。抽认卡应具有getQuestion和getAnswer方法
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"));
}
}
import java.util.ArrayList;
公共类抽认卡{
ArrayList cardlist=新建ArrayList();
抽认卡(字符串问题、字符串答案)
{
}
公共数组列表getQuestion(){
添加(新的抽认卡(“1Q-富兰克林·罗斯福更出名的缩写是什么?”,“1A-FDR”);
添加(新的抽认卡(“第2季度——哪位总统是富兰克林·罗斯福?”,“2A-32”);
添加(新的抽认卡(“3Q-富兰克林·罗斯福出生在哪个州?”,“3A-纽约”);
新增(新的抽认卡(“第4季度——罗斯福在哪一年成为纽约州州长?”,“4A-1929”);
添加(新的抽认卡(“5Q-富兰克林·罗斯福的妻子叫什么名字?”,“5A-Elenor”);
添加(新的抽认卡(“6Q-富兰克林·罗斯福有多少个孩子?”,“6A-6”);
添加(新的抽认卡(“7Q-富兰克林·罗斯福从哪所大学毕业并获得历史学士学位?”,“7A-哈佛”);
添加(新的抽认卡(“8Q-富兰克林·罗斯福的第五个表弟,也是总统的名字是什么?”,“8A-西奥多”);
新增(新的抽认卡(“9Q-哪种疾病被认为是富兰克林·罗斯福瘫痪的原因?”,“9A-脊髓灰质炎”);
添加(新的抽认卡(“10Q-富兰克林·罗斯福死在什么年龄?”,“10A-63”);
}
公共数组列表getAnswer(){
添加(新的抽认卡(“1Q-富兰克林·罗斯福更出名的缩写是什么?”,“1A-FDR”);
添加(新的抽认卡(“第2季度——哪位总统是富兰克林·罗斯福?”,“2A-32”);
添加(新的抽认卡(“3Q-富兰克林·罗斯福出生在哪个州?”,“3A-纽约”);
新增(新的抽认卡(“第4季度——罗斯福在哪一年成为纽约州州长?”,“4A-1929”);
添加(新的抽认卡(“5Q-富兰克林·罗斯福的妻子叫什么名字?”,“5A-Elenor”);
添加(新的抽认卡(“6Q-富兰克林·罗斯福有多少个孩子?”,“6A-6”);
添加(新的抽认卡(“7Q-富兰克林·罗斯福从哪所大学毕业并获得历史学士学位?”,“7A-哈佛”);
添加(新的抽认卡(“8Q-富兰克林·罗斯福的第五个表弟,也是总统的名字是什么?”,“8A-西奥多”);
新增(新的抽认卡(“9Q-哪种疾病被认为是富兰克林·罗斯福瘫痪的原因?”,“9A-脊髓灰质炎”);
添加(新的抽认卡(“10Q-富兰克林·罗斯福死在什么年龄?”,“10A-63”);
}
}
他们还需要返回ArrayList
,因此我真的不知道如何构造它,以便getQuestions()
方法返回与答案相同的抽认卡问题。非常感谢您提供的任何帮助。让我们尝试清除它:
但是如果flashcard包含两个字符串,那么这不意味着一个flashcard中同时包含答案和问题吗?
对这个班有两名成员。问答。它们在调用构造函数的同一时刻绑定在一起。这可以而且应该是最终决定。类似于私人最后一个字符串问题代码>
这意味着我不能有一个获取答案和获取问题的方法,因为它们不能分开?
否。该类有两个方法,可以随时调用。它们在任何时候都给出相同的结果。类似于公共字符串getQuestion(){return question;}
你的代码唯一的问题是你创建了两次抽认卡列表。不要那样做。将代码移动到单个点。可能放在一个单独的类中,其中包含抽认卡列表“Deck”。因此,当您创建一个“卡片组”时,它包含一个所有抽认卡的列表。这意味着一个抽认卡有一个问题和一个答案
这两个构造函数参数都应该存储在FlashCard
对象中。这就是它的属性
getQuestion
和getAnswer
方法是getters,它们只返回相应的属性,这里是FlashCard唯一的问题/答案
但是如果flashcard包含两个字符串,那么这不意味着一个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"));
}
}
答案和问题不能分开,因为它们都包含在FlashCard
对象中。但是您可以调用getQuestion
,而无需调用getAnswer
(另一种方法也是如此)
您在getQuestion
方法中输入的代码不应在此类中,与cardList
的声明相同。列表包含FlashCard
,但FlashCard
不应包含卡片列表。该代码可以创建多个闪存卡。你可以把它放在其他地方,比如在你的main
方法中或者其他类中
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;
}
}
}