将方法放入ArrayList Java

将方法放入ArrayList Java,java,arraylist,Java,Arraylist,我想把这些方法放到ArrayList中,但我不知道怎么做。我正在使用NetBeans,这个程序将是一个GUI 这是我的密码: public class canada150Tour extends javax.swing.JFrame { ArrayList <String> mcQuestions = new ArrayList(); //This is the array I want to put the below methods into. privat

我想把这些方法放到ArrayList中,但我不知道怎么做。我正在使用NetBeans,这个程序将是一个GUI

这是我的密码:

public class canada150Tour extends javax.swing.JFrame {

    ArrayList <String> mcQuestions = new ArrayList(); //This is the array I want to put the below methods into.


    private void questionFredricton(){
        outputTextQuestion.append("Where is Fredricton located?");

        displayQuestions.append("New Brunswick");        
    }
    private void questionRegina(){
        outputTextQuestion.setText("Where is Regina located?");

        displayQuestions.append("Saskatchewan");

    }
    private void questionOttawa(){
        outputTextQuestion.setText("Where is Ottawa located?");

        displayQuestions.append("Ontario");
    }
    private void questionHalifax(){
        outputTextQuestion.setText("Where is Halifax located?");

        displayQuestions.append("Nova Scotia");
    }
    private void questionQuebecCity(){
        outputTextQuestion.setText("Where is Quebec City located?");

        displayQuestions.append("Quebec");
    }
    private void questionEdmonton(){
        outputTextQuestion.setText("Where is Edmonton located?");

        displayQuestions.append("Alberta");
    }
    private void questionCharlottetown(){
        outputTextQuestion.setText("Where is Charlottetown located?");

        displayQuestions.append("Prince Edward Island");
    }
    private void questionVictoria(){
        outputTextQuestion.setText("Where is Victoria located?");

        displayQuestions.append("British Columbia");
    }
    private void questionIqaluit(){
        outputTextQuestion.setText("Where is Iqaluit located?");

        displayQuestions.append("Nunavut");
    }
    private void questionWhitehorse(){
        //outputTextQuestion.setText("Where is Whitehorse located?");

        displayQuestions.append("Yukon");
    }
    private void questionWinnipeg(){
        outputTextQuestion.setText("Where is Winnipeg located?");

        displayQuestions.append("Manitoba");
    }
所有的方法都是如此,但显然这是行不通的

在尝试添加到ArrayList(如上)时,我遇到编译错误:

此处不允许使用“void”类型

我对Java相当陌生,所以还在学习

编辑: 这最终将是一个选择题测验。我基本上想把这些方法放到一个数组中,这样我就可以随机选择方法了


提前谢谢

您需要将
ArrayList
作为参数传递给方法,以便在其中添加元素,例如:

private void questionFredricton(ArrayList <String> mcQuestions){
    mcQuestions.add("Where is Fredricton located?");
}
这样称呼它:

ArrayList <String> mcQuestions = new ArrayList();
questionFredricton(mcQuestions);
Map<String, String> questions = new HashMap<>();
questionFredricton(questions);
Map questions=newhashmap();
问题弗雷德里克顿(问题);

这样,您将能够存储问题和答案
questions.keySet()
将为您提供所有问题的列表,而
问题。get(“”
将为您提供答案。

如果您想在
字符串的
数组列表中添加
字符串,您的方法应返回
字符串

但事实上,我认为你们不应该这样做,因为你们需要问题和回答。似乎最好有一个问题和回答列表,而不是两个字符串列表。
问题和响应
可以包含问题的文本,也可以包含预期响应的文本。

public class QuestionAndResponse{
     public QuestionAndResponse(String question, String response){
         this.question = question;  
         this.response = response;
     }
     // getters for fields
}
因此,您可以声明列表:

List <QuestionAndResponse> mcQuestionsResponses = new ArrayList<>(); 
作者:

现在,您可以有一个使用它们的Canada150Tour(注意第一个字母的大写字母,以遵循命名约定)构造函数:

public class Canada150Tour extends JFrame {
    List <QuestionAndResponse> mcQuestionsResponses;
       ...
    public Canada150Tour(){
         mcQuestionsResponses = new ArrayList<>(); 
         mcQuestionsResponses.add(questionFredricton());
    }

     private QuestionAndResponse questionFredricton(){
        return new QuestionAndResponse("Where is Fredricton located?",
                                        "New Brunswick");
     }
}
公共类Canada150Tour扩展JFrame{
列出问题和回答;
...
公共旅游{
mcQuestionsResponses=新建ArrayList();
mcQuestionsResponses.add(questionFredricton());
}
私人问题和回答问题Fredricton(){
返回新问题并回答(“弗雷德里克顿在哪里?”,
“新不伦瑞克省”);
}
}

在我看来,您所需要的就像是将字符串映射到问答类的Hashmap!当你说“将方法放入ArrayList”时,你不能在ArrayList中添加方法,这是什么意思?完成此操作后,您希望列表中包含什么内容?@AbhishekAryan您可以通过使用方法引用来实现。然后列表将是一个
ArrayList
,您可以使用
mcQuestions.add(this::questionFredricton)
向其中添加方法。将这些方法添加到列表的目的是什么?通过使用Java反射,您可以获得方法对象,并且可以在对象上调用此方法,但使用起来有点困难。。。
List <QuestionAndResponse> mcQuestionsResponses = new ArrayList<>(); 
private void questionFredricton(){
    outputTextQuestion.append("Where is Fredricton located?");
    displayQuestions.append("New Brunswick");        
}
private QuestionAndResponse questionFredricton(){
    return new QuestionAndResponse("Where is Fredricton located?","New Brunswick");
}
public class Canada150Tour extends JFrame {
    List <QuestionAndResponse> mcQuestionsResponses;
       ...
    public Canada150Tour(){
         mcQuestionsResponses = new ArrayList<>(); 
         mcQuestionsResponses.add(questionFredricton());
    }

     private QuestionAndResponse questionFredricton(){
        return new QuestionAndResponse("Where is Fredricton located?",
                                        "New Brunswick");
     }
}