Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该如何使用Java对象引用?_Java_Android - Fatal编程技术网

我应该如何使用Java对象引用?

我应该如何使用Java对象引用?,java,android,Java,Android,我想为android做一个简单的测试 我被告知应该尝试使用对象引用 我不太确定怎么做,这就是我到目前为止所做的 package com.aleksei.etb; public class ETBetaActivity extends Activity implements View.OnClickListener { private String[] questions = {"Q1", "Q2", "Q3",

我想为android做一个简单的测试

我被告知应该尝试使用对象引用

我不太确定怎么做,这就是我到目前为止所做的

package com.aleksei.etb;
public class ETBetaActivity extends Activity implements View.OnClickListener {

       private String[] questions =
        {"Q1", 
         "Q2",
         "Q3", 
         "Q4",
         "Q5", //5
         "Q6", 
         "Q7", 
         "Q8", 
         "Q9",
         "Q10" //10
         };
         private String[] answers_correct =
        {"Correct answer - 1",
         "Correct answer - 2",
         "Correct answer - 3", 
         "Correct answer - 4",
         "Correct answer - 5",
         "Correct answer - 6",
         "Correct answer - 7",
         "Correct answer - 8",
         "Correct answer - 9",
         "Correct answer - 10"
         };

         private String[][] answers_wrong = 
         { {"Q1-1", "Q1-2" , "Q1-3"},
           {"Q2-1", "Q2-2" , "Q2-3"},
           {"Q3-1", "Q3-2" , "Q3-3"},
           {"Q4-1", "Q4-2" , "Q4-3"},
           {"Q5-1", "Q5-2" , "Q5-3"},
           {"Q6-1", "Q6-2" , "Q6-3"},
           {"Q7-1", "Q7-2" , "Q7-3"},
           {"Q8-1", "Q8-2" , "Q8-3"},
           {"Q9-1", "Q9-2" , "Q9-3"},
           {"Q10-1", "Q10-2" , "Q10-3"}

         };
         private int counter = 0;
         public Button answer_1,
         answer_2,answer_3,
         answer_4,skip;

         public TextView question_tv,
         tip_tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getData();
        quizBegin();
    }

    public static int getResults(){
       return 5;
    }


    @Override
    public void onClick(View view) {
        switch(view.getId()){
        case R.id.button5: //main
            break;
        case R.id.button1: //answer_1
            break;
        case R.id.button2: //answer_2
            break;
        case R.id.button3: //answer_3
            break;
        case R.id.button4: //answer_3
            break;
        }
    }

    private void getData(){
        //Everything
        skip = (Button) findViewById(R.id.button5);
        answer_1 = (Button) findViewById(R.id.button1);
        answer_2 = (Button) findViewById(R.id.button2);
        answer_3 = (Button) findViewById(R.id.button3);
        answer_4 = (Button) findViewById(R.id.button4);
        question_tv = (TextView) findViewById(R.id.question);
        tip_tv = (TextView) findViewById(R.id.answ1);

        //Buttons
        skip.setOnClickListener(this);
        answer_1.setOnClickListener(this);
        answer_2.setOnClickListener(this);
        answer_3.setOnClickListener(this);
        answer_4.setOnClickListener(this);

        //Text
        skip.setText("Begin!");
        answer_4.setText("");
        answer_3.setText("");
        answer_2.setText("");
        answer_1.setText("");
        tip_tv.setText(""); 
    }

    private void quizBegin(){
        String question = Question.(questions[counter], answers_correct[counter],
                answers_wrong[counter],counter); //error here.

        //What am I suppose to do??
            // How to use an object reference??
            // Help please!

        question_tv.setText("");



        counter++;
    }



}
问题类,它封装了一个问题及其正确和错误的答案

public class Question {

    private String question;
    private String correctAnswer;
    private List<String> incorrectAnswers;
    private int counter = 0;



    public Question(final String question, final String correctAnswer, 
            final String[] incorrectAnswers, int counter) {
    // TODO: empty strings/nulls checks
    this.question = question;
    this.correctAnswer = correctAnswer;
    this.incorrectAnswers = Arrays.asList(incorrectAnswers);
    }

    public List<String> getPossibleAnswers() {
        final List<String> result = new ArrayList<String>();
        result.addAll(incorrectAnswers);
        result.add(correctAnswer);
        Collections.shuffle(result);
        return result;
    }

    public boolean isCorrectAnswer(final String answer) {
        if (answer.equals(correctAnswer)) {
            return true;
        }
        return false;
    }

    public String getQuestion() {
        return question;
    }

}
公开课问题{
私有字符串问题;
私人字符串更正应答;
私人名单不正确答案;
专用整数计数器=0;
公开问题(最终字符串问题、最终字符串答案、,
最终字符串[]不正确答案,整数计数器){
//TODO:空字符串/空检查
这个问题=问题;
this.correctAnswer=correctAnswer;
this.incorrectAnswers=Arrays.asList(incorrectAnswers);
}
公共列表getPossibleAnswers(){
最终列表结果=新建ArrayList();
结果:addAll(不正确回答);
结果。添加(正确答案);
集合。洗牌(结果);
返回结果;
}
公共布尔值isCorrectAnswer(最终字符串答案){
如果(答案等于(正确答案)){
返回true;
}
返回false;
}
公共字符串getQuestion(){
返回问题;
}
}

我只能猜测您的实际问题,但为什么您要使用字符串数组来表示问题、正确答案和错误答案?为什么不使用
Question
对象数组,并让
Question
对象管理回答是否正确

编辑

语句<代码>新问题(问题[计数器]、回答正确[计数器]、回答错误[计数器]、计数器)调用
问题
类中的构造函数,该构造函数接受给定的参数类型、顺序和数量,以创建对象的
实例

Question q = new Question();
创建一个新的
Question
对象实例,并将引用分配给变量
q
,该变量可用于访问它所引用的
Question
类的信息。这是面向对象编程的基本概念

第二次编辑

这一行适用于您:

String[]sl=(String[])q_class.getPossibleAnswers().toArray(新字符串[0])

但是对字符串数组的强制转换(
(String[])
)是没有意义的。方法
toArray(T[])
使用并返回与传递给它的数组类型相同的数组。因此,将
新字符串[0]
传递给该方法可以保证返回
字符串[]
。因此,您正在将
字符串[]
转换为
字符串[]

你真的想一开始就这么做吗?为什么不能使用
列表
代替数组

如果您在不同类型之间进行大量转换,您应该问问自己是否可以调整代码以在单个类型上操作


(旁注,您可以使用反勾(`)来表示内联代码部分,这有助于使您放在注释中的代码片段更易于提取和阅读)。

澄清您想做什么,不要将其用作代码转储。我发现,它看起来像问题q_class=新问题(问题[counter],答案[counter],回答错误[计数器],计数器);String question=q_class.getQuestion();问题(问题);;,是吗?如果这就是你所困惑的,你的问题是非常误导的,那就是(更多的信息添加到我的问题中作为编辑)。啊,谢谢。但是您能告诉我如何将列表转换为数组吗?我完全忘记了。@John,因为看起来你是新来的,我将为你提供一个指向该类API的链接,而不仅仅是给你答案。您可能对它的
toArray
方法感兴趣。@John我的错,我没有注意到您将变量声明为
列表
。它不会改变您正在寻找的内容,两者都有适合您需要的
toArray
方法。谢谢。这是正确的吗?String[]sl=(String[])q_class.getPossibleAnswers().toArray(新字符串[0]);