将方法放入ArrayList Java
我想把这些方法放到ArrayList中,但我不知道怎么做。我正在使用NetBeans,这个程序将是一个GUI 这是我的密码:将方法放入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
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");
}
}