Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建构造函数、方法和存储数组的混乱规范?_Java_Arrays_Arraylist_Methods_Constructor - Fatal编程技术网

Java 创建构造函数、方法和存储数组的混乱规范?

Java 创建构造函数、方法和存储数组的混乱规范?,java,arrays,arraylist,methods,constructor,Java,Arrays,Arraylist,Methods,Constructor,我正在做一项作业,我对别人要求我做什么感到困惑。规格为: 创建一个FlashCard类,该类在其构造函数中包含两个字符串,一个用于问题,一个用于答案。抽认卡应具有getQuestion和getAnswer方法 所以他们想让我创建一个构造函数,它有两个参数,一个用于问题,一个用于答案。然后他们希望我创建一个getAnswer和getQuestion方法,其中包含eah flashcard的答案和问题。但是如果flashcard包含两个字符串,那么这不意味着一个flashcard中同时包含答案和

我正在做一项作业,我对别人要求我做什么感到困惑。规格为:

  • 创建一个FlashCard类,该类在其构造函数中包含两个字符串,一个用于问题,一个用于答案。抽认卡应具有getQuestion和getAnswer方法
所以他们想让我创建一个构造函数,它有两个参数,一个用于问题,一个用于答案。然后他们希望我创建一个getAnswer和getQuestion方法,其中包含eah 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")); 

    }

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

        }
}