我想展示一系列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];
}
}
});
}
}
答案 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;
移到听众之外以及i
和n
变量旁边。
您还需要从按钮单击中删除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有两个布局问题和答案布局。如果位置的答案数组等于用户回答它的正确答案,就像你可以动态