如何使用数组在 Android 中随机提问

Posted

技术标签:

【中文标题】如何使用数组在 Android 中随机提问【英文标题】:How to random question in Android with Array 【发布时间】:2019-06-09 16:56:37 【问题描述】:

请帮助我完成我的项目。我试图不随机地展示这个问题。 我必须首先在文件 Soalpilihan.java 中提交问题,然后执行以回答和显示文件 QuizGameActivity.java 中的问题。 如果我将问题数组保存在其他文件中并将问题放到其他文件中并随机化,这将如何随机化问题。

这是代码QuizGameActivity.java

package com.belajarbahasajerman;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class QuizGameActivity extends Activity implements OnClickListener 
    Button btnback;
    private MediaPlayer mp;
    private Uri uri;
    TextView tvSoal;
    Button OptionA, OptionB, OptionC;
    int skor=0;
    int arr;
    int x; 
    Boolean clicked1=false,clicked2=false,clicked3=false;
    String jawaban;

    Soalpilihan soalPG = new Soalpilihan();

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.quizgame);

        btnback=(Button)findViewById(R.id.btnback3);
        uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.btn_klik);
        mp = MediaPlayer.create(this, uri);
        tvSoal = (TextView)findViewById(R.id.Soal);
        OptionA = (Button)findViewById(R.id.OptionA);
        OptionB = (Button)findViewById(R.id.OptionB);
        OptionC = (Button)findViewById(R.id.OptionC);

        setKonten();
        OptionA.setOnClickListener(this);
        OptionB.setOnClickListener(this);
        OptionC.setOnClickListener(this);

    

    @Override
    public void onClick(View v)
        switch (v.getId()) 
            case R.id.OptionA:
                mp.start();
                if(OptionA.getText().toString().equals(jawaban))
                    skor = skor + 10;
                    Toast.makeText(this, "Jawaban Benar", Toast.LENGTH_SHORT).show();
                    setKonten();
                else
                    Toast.makeText(this, "Jawaban Salah", Toast.LENGTH_SHORT).show();
                    setKonten();
                
                break;
            case R.id.OptionB:
                mp.start();
                if(OptionB.getText().toString().equals(jawaban))
                    skor = skor + 10;
                    Toast.makeText(this, "Jawaban Benar", Toast.LENGTH_SHORT).show();
                    setKonten();
                else
                    Toast.makeText(this, "Jawaban Salah", Toast.LENGTH_SHORT).show();
                    setKonten();
                
                break;
            case R.id.OptionC:
                mp.start();
                if(OptionC.getText().toString().equals(jawaban))
                    skor = skor + 10;
                    Toast.makeText(this, "Jawaban Benar", Toast.LENGTH_SHORT).show();
                    setKonten();
                else
                    Toast.makeText(this, "Jawaban Salah", Toast.LENGTH_SHORT).show();
                    setKonten();
                
                break;
        
    

    public void setKonten()
        arr = soalPG.pertanyaan.length;
        if(x >= arr)
            Intent i = new Intent(QuizGameActivity.this, HasilSkoring.class);
            i.putExtra("skorAkhir",skor);
            i.putExtra("activity","PilihanGanda");
            startActivity(i);
        else
            tvSoal.setText(soalPG.getPertanyaan(x));
            OptionA.setText(soalPG.getPilihanJawaban1(x));
            OptionB.setText(soalPG.getPilihanJawaban2(x));
            OptionC.setText(soalPG.getPilihanJawaban3(x));
            jawaban = soalPG.getJawabanBenar(x);

        
        x++;
    


这是代码Soalpilihan.java

package com.belajarbahasajerman;

public class Soalpilihan 
    public String pertanyaan[] = 
        " Bahasa Jerman 'Nama saya' adalah ",
         " Ada berapa huruf yang ada di bahasa Jerman ? ",
         " Angka tiga dalam bahasa Jerman yaitu ",
         " Ich bin ... Jahre alt adalah menyatakan tentang ",
         " Di bahasa Jerman mengucapkan selamat malam adalah ",
         " Ketika berpisah dengan seseorang, kamu harus mengatakan(dalam formal) ? ",
         " elf + vier adalah ",
         " Terima kasih dalam bahasa Jerman ",
         " Sechs, sieben, acht, ... lanjutannya adalah ",
         " Guten tag adalah ucapan pada saat ? ",
    ;

    private String pilihjaw[][] = 
            "Ich heiße","Ich komme","Ich reise mit",
            "26 huruf","28 huruf","30 huruf",
            "drei","thri","zwei",
            "Saya berasal","Nama saya","Umur saya",
            "Guten Tag","Gute Nacht","Guten Morgen",
            "Tschuss","Auf Wiedersehen","Gute bay",
            "15","14","16",
            "Bitte","Danke","Sankyu",
            "Zehn","Funf","Neun",
            "Selamat siang","Selamat malam","Selamat pagi",
    ;

    private String jawbenar[] = 
            "Ich heiße",
            "30 huruf",
            "drei",
            "Umur saya",
            "Gute Nacht",
            "Auf Wiedersehen",
            "15",
            "Danke",
            "Neun",
            "Selamat siang",
    ;

    public String getPertanyaan(int x)
        String soal = pertanyaan[x];
        return soal;
    

    public String getPilihanJawaban1(int x)
        String jawaban1 = pilihjaw[x][0];
        return jawaban1;
    

    public String getPilihanJawaban2(int x)
        String jawaban2 = pilihjaw[x][1];
        return jawaban2;
    

    public String getPilihanJawaban3(int x)
        String jawaban3 = pilihjaw[x][2];
        return jawaban3;
    

    public String getJawabanBenar(int x)
        String jawaban = jawbenar[x];
        return jawaban;
    

【问题讨论】:

【参考方案1】:

您有一些方法可以根据传入的数字获取字符串。

例如:

int random = (int)(Math.random() * 10 + 1);
String randomPertanyaan = getPertanyaan(random);

布尔助手

你将不得不玩弄逻辑。

public boolean correctAnswer(int random, int answer)
    String randomPertanyaan = getPertanyaan(random);
    String getAnswers = getAnswers(random, answer);
    if (answer == //userinput) 
        return true;
    
    return false;

得到答案

public String getAnswers(int random, int answer)
    String getAnswer = pilihjaw[random][answer]; //random is the ROW for the question, answer is that ANSWER.
    return getAnswer;

【讨论】:

好吧,这个问题是随机的,但是......答案呢?如何匹配问题和答案? 您需要将其存储在某个地方。例如,如果我在索引 4 中有一个问题,那么我知道我的问题和答案集在同一个索引中,对吗?那么,问题,天空是什么颜色的?一组答案(“蓝色​​”、“红色”、“橙色”)。我必须告诉我的程序答案是 1(或 0)。您可以创建一个布尔方法,该方法接受问题的随机整数,以及答案的随机整数。 查看我的更新答案@AlvinIndra,您将不得不玩弄逻辑。

以上是关于如何使用数组在 Android 中随机提问的主要内容,如果未能解决你的问题,请参考以下文章

IDL 中 如何从一个数组中随机取出3个数?

如何从字符串 ArrayList 在字符串数组中的随机位置添加元素。在 Android Java 中

如何使用随机值生成数组,而不使用循环?

如何使用 JavaScript 从数组中选择随机值? [复制]

如何使用复选框制作一个赞按钮以将随机生成的引号存储到数组中

如何确保从数组中随机选择的下一个值与使用 Javascript 的当前值不同? [复制]