Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,131

HOME > Mobile > Mobile Forum > Android - สอบถามปัญหาทำแบบทดสอบแบบสุ่ม 5 ข้อแต่มันเล่นได้แค่ข้อเดียวครับ



 

Android - สอบถามปัญหาทำแบบทดสอบแบบสุ่ม 5 ข้อแต่มันเล่นได้แค่ข้อเดียวครับ

 



Topic : 108010



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์




ทดลองทำแบบทดสอบแบบสุ่ม จำนวน 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







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-04-30 13:29:01 By : apivat View : 1869 Reply : 2
 

 

No. 1



โพสกระทู้ ( 74,054 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ไม่เก็บลง SQLite ล่ะครับ ตอนสุ่มจะได้ง่ายหน่อย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-02 10:23:27 By : mr.win
 


 

No. 2



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ย้าย `counter++` ไปไว้ที่เมธอด `QBegin()` ข้างนอกลูป

ผมเห็นคุณเช็คเงื่อนไข `if (finished || counter > quiz.length+1)` แต่ว่า ตรงเมธอด getAnswer() ข้อเดียว คุณก็วนลูปจน counter มันบวกไปตามจำนวนขนาดของ List แล้ว พอ ข้อที่สอง counter มันมากกว่าความยาว List มันก็หยุดซิครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-02 13:29:45 By : devahoy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Android - สอบถามปัญหาทำแบบทดสอบแบบสุ่ม 5 ข้อแต่มันเล่นได้แค่ข้อเดียวครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2020 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่