2013-11-15 154 views
0

我正在尝试初始化一个谜团游戏的问题阵列,其中包含潜在的答案选项和正确的答案选项。这是我的主类:数组初始化Java

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

但得到这个错误消息:

构造函数类中的问题问题不能应用于给定类型; 要求:无参数 发现:字符串,字符串,字符串,字符串,字符串,整数 原因:实际的和正式的参数列表长度

不同如何正确传递问题,答案选择,并为每个正确答案问题构造函数的琐碎问题?

+0

您可以像使用其他任何方法调用一样,使用'''列出它们。 –

+1

他们从哪里来?用户输入?文本文件? –

回答

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); 
0

简单的方法是这样的:

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

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

  • 您必须重新编译才能添加/更改问题。
  • 它需要太多的内存......'cos所有的Q &一个字符串需要一直在内存中。
  • 您遇到了架构限制;例如方法的字节码限制。

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

0

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

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

传递上述目的,以阵列的问题。