【问题标题】:Array Initialization Java数组初始化 Java
【发布时间】:2013-11-28 07:59:52
【问题描述】:

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

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

我尝试在 main 方法中输入这个:

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

但收到此错误消息:

类 Question 中的构造函数 Question 不能应用于给定类型; 必需:无参数 找到:字符串,字符串,字符串,字符串,字符串,int 原因:实际参数列表和形式参数列表的长度不同

如何正确地将每个琐事问题的问题、答案选择和正确答案传递给 Question 构造函数?

【问题讨论】:

  • 您可以像任何其他方法调用一样在它们之间用, 列出它们。
  • 他们来自哪里?用户输入?文本文件?

标签: java arrays


【解决方案1】:

下面会起作用,但我猜你真的想添加真实数据,而不仅仅是空字符串。数据来自哪里?

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      简单的方法是这样的:

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

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

      • 您必须重新编译才能添加/更改问题。
      • 占用太多内存...因为所有问答字符串都需要始终在内存中。
      • 您遇到了架构限制;例如方法的字节码限制。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-30
        • 2013-04-14
        • 2013-01-20
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2013-01-08
        相关资源
        最近更新 更多