想循环问题并计算正确的答案

时间:2016-04-30 03:13:20

标签: android

我想展示一系列10个问题并让用户回答,并让应用程序显示答案是否正确,然后显示下一个问题。

现在我可以显示第一个问题,检查它是否正确,然后显示第二个问题。但是,我不知道如何让这个循环显示所有问题。以下是相关代码:

public class MathTestActivity extends AppCompatActivity {

int i = 0;
int n = 20; /*How many rows this test*/
String[] mathTest = new String[40];
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mathtest);

    final TextView mathProblem = (TextView) findViewById(R.id.mathProblem);
    final EditText mathAnswer = (EditText) findViewById(R.id.mathAnswer);

    //Styling for the question text
    mathProblem.setTextSize(40);
    mathProblem.setTextColor(Color.rgb(0, 0, 0));


    //Try to read the problem and answers text file
    try {
        InputStream is = this.getResources().openRawResource(R.raw.mediummath);
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String line;

        int n = 20; /*How many rows this test has*/
        /*read in file to array*/
        for (i = 0; i < n; i=i+2) {
            if ((line = reader.readLine()) != null)
                mathTest[i] = line;
            if ((line = reader.readLine()) != null)
                mathTest[i+1] = line;
        }


    } catch (IOException e) {
        e.printStackTrace();
    }

    mathProblem.setText(mathTest[0]);

    Button enterButton = (Button) findViewById(R.id.enterButton);
    enterButton.setOnClickListener(new View.OnClickListener() {

        @Override
            public void onClick(View view) {
                int correctcount = 0;
                i = 0;

                String answer = mathAnswer.toString() ;
                String correctAnswer = mathTest[i+1];


                    if (answer.equals(correctAnswer)){
                        Toast.makeText(MathTestActivity.this,
                                        R.string.correct_toast,
                                        Toast.LENGTH_SHORT).show();
                        correctcount++;
                        i = i + 2;
                        mathProblem.setText(mathTest[i]);
                        correctAnswer = mathTest[i+1];
                    }
                    else{
                        Toast.makeText(MathTestActivity.this,
                                correctAnswer,
                                Toast.LENGTH_SHORT).show();
                        i = i + 2;
                        mathProblem.setText(mathTest[i]);
                        correctAnswer = mathTest[i+1];
                    }
        }
    });
}
}

3 个答案:

答案 0 :(得分:1)

如果您想在滑动演示文稿(http://developer.android.com/training/animation/screen-slide.html)中显示问题,可以尝试在ViewPager中提问。

如果您想从上到下查看问题,也可以将问题置于ListView内。 (http://developer.android.com/guide/topics/ui/layout/listview.html

修改 实际上,你已经接近完成了你想要做的事情。

您应该删除按钮onClick()函数内的i = 0;,因为它会阻止您转到下一个问题(第3个,第4个等)。当用户提交问题时,您可能需要考虑清除mathAnswer EditText。

此外,没有必要在if-else函数中设置correctAnswer = mathTest[i+1];

答案 1 :(得分:1)

每次单击按钮时,无法使用设置为0的局部变量计算正确的答案。 :)

您应该将int correctcount = 0;移到听众之外以及in变量旁边。

您还需要从按钮单击中删除i = 0;行,因为每次单击按钮时都会将您重置为第一个问题。

此外,由于这三行在if和else之间重复,你可以直接将它们放在else之后。

i = i + 2;
mathProblem.setText(mathTest[i]);
correctAnswer = mathTest[i+1]; // this isn't needed, though

答案 2 :(得分:0)

使用arraylist for questions array和answer array.use view pager有两个布局问题和答案布局。如果位置的答案数组等于用户回答它的正确答案,就像你可以动态