|
|
|
Android - สอบถามปัญหาทำแบบทดสอบแบบสุ่ม 5 ข้อแต่มันเล่นได้แค่ข้อเดียวครับ |
|
|
|
|
|
|
|
ทดลองทำแบบทดสอบแบบสุ่ม จำนวน 5 ข้อ โดยนำคำตอบแบบ Text มาใส่ลงในปุ่มเพื่อเลือกตอบ พอรันแล้วทดลองคลิกตอบ ทำไมมันแสดงแค่ข้อเดียว 2 ครั้ง แล้วก็ สรุปผลคะแนนเลยครับ ทำอย่างไรถึงจะให้รันครบทั้ง 5 ข้อ จนถึงข้อสุดท้ายแล้วค่อยสรุปคะแนน
Code (Android-Java)
package com.example.q;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener {
Button begin,answer1,answer2,answer3,answer4;
Button Buttons[] = {begin,answer1,answer2,answer3,answer4};
TextView display_1, question;
MediaPlayer Sound_click;
private String a1,a2,a3,a4 = "";
List<Integer> QuestionIds = new ArrayList<Integer>();
String[] quiz = {
"คำถามข้อที่ 1", //1
"คำถามข้อที่ 2", //2
"คำถามข้อที่ 3", //3
"คำถามข้อที่ 4", //4
"คำถามข้อที่ 5"}; //5
private String correctList[] = {
"คำตอบที่ถูก ข้อที่ 1", //1
"คำตอบที่ถูก ข้อที่ 2", //2
"คำตอบที่ถูก ข้อที่ 3", //3
"คำตอบที่ถูก ข้อที่ 4", //4
"คำตอบที่ถูก ข้อที่ 5"}; //5
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getData();
begin.setOnClickListener(this);
answer4.setOnClickListener(this);
answer1.setOnClickListener(this);
answer2.setOnClickListener(this);
answer3.setOnClickListener(this);
}
private void getData() {
// Gets the data
begin = (Button) findViewById(R.id.btnStart);
answer1 = (Button) findViewById(R.id.button1);
answer2 = (Button) findViewById(R.id.button2);
answer3 = (Button) findViewById(R.id.button3);
answer4 = (Button) findViewById(R.id.button4);
question = (TextView) findViewById(R.id.question);
display_1 = (TextView) findViewById(R.id.answ1);
for (int b = 0; b < quiz.length; b++) {
QuestionIds.add(b);
}
Collections.shuffle(QuestionIds);
// QuestionIds.get(0);
// QuestionIds.remove(0);
begin.setText("เริ่มสอบ");
answer4.setText("");
answer3.setText("");
answer2.setText("");
answer1.setText("");
// answer1.setVisibility(View.INVISIBLE);
// answer2.setVisibility(View.INVISIBLE);
// answer3.setVisibility(View.INVISIBLE);
// answer4.setVisibility(View.INVISIBLE);
}
public void onPause(Bundle b){
super.onCreate(b);
}
private int correct = 0;
@Override
public void onClick(View view) {
Sound_click = MediaPlayer.create(this, R.raw.click);
if(finished || counter > quiz.length+1) {
display_1.setText(results(correct, quiz.length));
return;
}
// TODO Auto-generated method stub
switch(view.getId()){
case R.id.btnStart:
// begin.setVisibility(View.INVISIBLE);
break;
case R.id.button1:
if(isCorrect(1))
correct++;
break;
case R.id.button2:
if(isCorrect(2))
correct++;
break;
case R.id.button3:
if(isCorrect(3))
correct++;
break;
case R.id.button4:
if(isCorrect(4))
correct++;
break;
}
Sound_click.start();
QBegin();
}
public boolean isCorrect(int button){
if(finished)
return false;
for (int i = 0; i < correctList.length; i++){
if(a1 == correctList[i] && button == 1 || a2 == correctList[i] && button == 2
|| a3 == correctList[i] && button == 3 || a4 == correctList[i] && button == 4)
return true;
}
return false;
}
private boolean finished = false;
private int counter = 0;
List<Integer> indexes = new ArrayList<Integer>();
private String results(int a, int x){
int mark = (5 * a) / x;
return "คะแนนของคุณคือ"+mark;
}
private void QBegin() {
for (Integer index : QuestionIds){
question.setText(quiz[index]);
getAnswers(index);
//QuestionIds.remove(index);
}
}
public static int random(int range) {
return (int)(java.lang.Math.random() * (range+1));
}
private void getAnswers(int Type) {
try {
String answers_list[][] = {
{correctList[Type], "คำตอบผิดของข้อ 1", "คำตอบผิดของข้อ 1", "คำตอบผิดของข้อ 1"},
{correctList[Type], "คำตอบผิดของข้อ 2", "คำตอบผิดของข้อ 2", "คำตอบผิดของข้อ 2"},
{correctList[Type], "คำตอบผิดของข้อ 3", "คำตอบผิดของข้อ 3", "คำตอบผิดของข้อ 3"},
{correctList[Type], "คำตอบผิดของข้อ 4", "คำตอบผิดของข้อ 4", "คำตอบผิดของข้อ 4"},
{correctList[Type], "คำตอบผิดของข้อ 5", "คำตอบผิดของข้อ 5", "คำตอบผิดของข้อ 5"}} ;
Collections.shuffle(Arrays.asList(answers_list[Type]));
answer1.setVisibility(View.VISIBLE);
answer2.setVisibility(View.VISIBLE);
answer3.setVisibility(View.VISIBLE);
answer4.setVisibility(View.VISIBLE);
answer1.setText(answers_list[Type][0]);
answer2.setText(answers_list[Type][1]);
answer3.setText(answers_list[Type][2]);
answer4.setText(answers_list[Type][3]);
this.a1 = answers_list[Type][0];
this.a2 = answers_list[Type][1];
this.a3 = answers_list[Type][2];
this.a4 = answers_list[Type][3];
counter++;
} catch(Exception ex){
System.out.println(ex);
}
}
public static class Question {
private final String question;
private final String correctAnswer;
private final List<String> incorrectAnswers;
public Question(final String question, final String correctAnswer,
final List<String> incorrectAnswers) {
// TODO: empty strings/nulls checks
this.question = question;
this.correctAnswer = correctAnswer;
this.incorrectAnswers = new ArrayList<String>(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;
}
}
}
Tag : Mobile, Android, Tablets
|
|
|
|
|
|
Date :
2014-04-30 13:29:01 |
By :
apivat |
View :
2517 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่เก็บลง SQLite ล่ะครับ ตอนสุ่มจะได้ง่ายหน่อย
|
|
|
|
|
Date :
2014-05-02 10:23:27 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ย้าย `counter++` ไปไว้ที่เมธอด `QBegin()` ข้างนอกลูป
ผมเห็นคุณเช็คเงื่อนไข `if (finished || counter > quiz.length+1)` แต่ว่า ตรงเมธอด getAnswer() ข้อเดียว คุณก็วนลูปจน counter มันบวกไปตามจำนวนขนาดของ List แล้ว พอ ข้อที่สอง counter มันมากกว่าความยาว List มันก็หยุดซิครับ
|
|
|
|
|
Date :
2014-05-02 13:29:45 |
By :
devahoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|