数组初始化Java

时间:2013-11-15 02:24:33

标签: java arrays

我正在尝试为琐事游戏初始化一系列问题,并提供潜在的答案选择和正确的答案选择。这是我的主要课程:

public class Lab82 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    final int NUM_QUESTIONS = 10;
    Question[] questions = new Question[10];


}
}

以下是琐事问题的课程:

 public class Question {
 //fields
 private String question;
 private String ans1;
 private String ans2;
 private String ans3;
 private String ans4;
 private int correctAns;

 /**
 * Constructor
 * @param question
 * @param ans1
 * @param ans2
 * @param ans3
 * @param ans4
 * @param correctAns 
 */
public Question(String question, String ans1, String ans2, String ans3, String ans4, int correctAns){
this.question = question;
this.ans1 = ans1;
this.ans2= ans2;
this.ans3 = ans3;
this.ans4 = ans4;
this.correctAns = correctAns;
}
}

我尝试在主方法中输入:

questions[0] = new Question("How old are you?", "Zero", "One", "Two", "Three", 2);

但收到此错误消息:

构造函数类问题无法应用于给定类型; 必需:没有参数 found:String,String,String,String,String,int 原因:实际和正式的参数列表长度不同

如何正确地向问题构造函数传递问题,回答选择并更正每个琐事问题的答案?

3 个答案:

答案 0 :(得分:0)

以下内容可行,但我猜你真的想要添加真实数据,而不仅仅是空字符串。数据来自哪里?

for (int x = 0; x < questions.length; x++)
{
    questions[x] = new Question("", "", "", "", 1);
}

因此,您可能希望单独填写每个问题,如

questions [0] = new Question("What is SO?", "Stack Overflow", "Say Oi", "Sasuages OK",                    "so", 1);
questions [1] = new Question("....", "...", "...", "...", "...", 1);

答案 1 :(得分:0)

简单的方法是这样的:

   new Question("What's the time Mr Wolf?", "3 oclock", "4 oclock", "5 oclock", 
                "Dinner time!", 4);

但这不是一个好的解决方案,因为将问题和答案硬连接到代码中会产生问题。

  • 您必须重新编译才能添加/更改问题。
  • 需要太多记忆......'所有Q&amp; A字符串都需要始终在内存中。
  • 你遇到了建筑限制;例如方法的字节码限制。

更好的方法是根据需要加载Q&amp; A(来自应用程序资源,文件,数据库,外部服务......)。

答案 2 :(得分:0)

在Class Lab82的主要方法中创建Question类型的新对象。

Question questionOne = new Question(questionOne, ans1, ans2, ans3, ans4, correctAns);

将上述对象传递给数组问题。