Java:如何将String添加到对象Arraylist?

时间:2018-03-08 06:09:18

标签: java arraylist

哈利波特你哪个角色测验。

所以我想采取每个选项,并且与每个选项相关联的字符(在选项下方是由逗号分隔的每个字符.1.Acid Pops Neville Longbottom,3。Bertie Bott's Every Flavour Beans Luna Lovegood Nymphadora Tonks ....我想在main方法中发送选项,字符并将其作为String发送到Question类,并将其存储在Answer not string类型的Arraylist中。并在答案中class将只传递给用户选择的内容,例如2. Sherbert Lemons和Albus Dumbledore。

String[] questions =
{
    "Favourite sweet",
};
String [][] options =
{
    {"1.Acid Pops","2.Sherbert Lemons","3.Bertie Bott's Every Flavour Beans", 
    "4.Cake","5.Hagrid's Rock Cakes","6.Chocolate Frogs","7.Ginger Newt",
    "8.I hate sweets\n"},

    {"Neville Longbottom","Albus Dumbledore", "Luna Lovegood, Nymphadora 
    Tonks", "Dobby, Arthur Weasley", "Rubeus Hagrid",
    "Harry Potter, Ron Weasley", "Minerva McGonagall, Hermione Granger, 
     Dolores Umbridge, Sybill Trelawney", 
    "Severus Snape, Tom Riddle, Sirius Black, Bellatrix Lestrange, Draco 
     Malfoy, Lucius Malfoy"}
    };

这是我的主要方法中的for循环:

for (int i =0; i < questions.length; i ++){
        String aQuestion = questions[i];
        Question q = new Question(aQuestion);
        System.out.println(aQuestion);
        for(int j=0; j < options[i].length; j++){
            q.setAnswers(options[i][j], options[i+1][j]);
            System.out.println(options[i][j]);
        }
    }

这是我的问题类:

 private String question;
 public ArrayList<Answer> answers = new ArrayList<Answer>();

 public Question(String q){
    question = q;
 }

public void setAnswers(String options, String options2){
    answers.add(options);
    answers.add(options2);
} 

很抱歉,如果这没有意义。 我也不明白为什么你有一个类型的arraylist:答案与你在程序中的类名相匹配。如果这也有意义。

2 个答案:

答案 0 :(得分:0)

问题是,除List<Answer>个对象外,您无法向Answer添加任何内容(任何其他对象)。

请参阅以下第1行和第2行

public void setAnswers(String options, String options2){
    answers.add(options);    //LINE 1
    answers.add(options2);   //LINE 2
} 

现在,我不确定你的Answer是怎样的。但如果它与选项有关。它可以在Answer

中具有以下构造函数
Answer(String option){
   this.option = option;
}

你可以修改你的代码看起来像这样

public void setAnswers(String options, String options2){
    answers.add(new Answer(options));    //LINE 1
    answers.add(new Answer(options));   //LINE 2
} 

答案 1 :(得分:0)

  

我也不明白为什么你有一个

类型的arraylist

对java中的集合进行了类型化,以避免意外添加错误的对象。您可以很好地省略声明中的类型,但不建议这样做。

作为替代解决方案,您可以:

  1. ArrayList<Answer> answers的类型更改为更通用的类型,例如Serializable
  2. 换行String options1options2并将其转换为答案类型,然后将其添加到列表中。
  3. 我更喜欢第二种选择。

    转换:在Answer类中创建一个返回Answer对象的方法,你可以将其设为静态

    public static Answer getAnswerFromString(String answer) {
      // Logic to create Answer object from string
    }
    

    然后按如下所示修改此方法,为该列表添加答案:

    public void setAnswers(String options, String options2){
      answers.add(Answer.getAnswerFromString(options));
      answers.add(Answer.getAnswerFromString(options2));
    }
    

    或者你可以添加一个带有String参数的构造函数,如果它在其他答案中指出它是有意义的。