Java 我尝试在android中创建一个词汇循环

Java 我尝试在android中创建一个词汇循环,java,android,arrays,loops,Java,Android,Arrays,Loops,我正在尝试制作一个类似于词汇卡的应用程序。 我有一个应答数组(数组大小=4)。 我随机创建一个英语单词,然后在答案数组中添加英语单词的真值,并删除土耳其语数组中英语单词的真值,以避免在随机中再次使用。我对其他答案数组执行相同的操作,包括错误的值 问题是数组大小将变为0。例如,我的数组总数为20。当我删除真值时,数组大小将变为19-18-17。。。每次单击,然后程序关闭 这是我的密码: package de.murattekinlive.pwords; import android.conten

我正在尝试制作一个类似于词汇卡的应用程序。 我有一个应答数组(数组大小=4)。 我随机创建一个英语单词,然后在答案数组中添加英语单词的真值,并删除土耳其语数组中英语单词的真值,以避免在随机中再次使用。我对其他答案数组执行相同的操作,包括错误的值

问题是数组大小将变为0。例如,我的数组总数为20。当我删除真值时,数组大小将变为19-18-17。。。每次单击,然后程序关闭

这是我的密码:

package de.murattekinlive.pwords;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class WordsActivity extends AppCompatActivity {
TextView textView;
TextView deneme;
DataBase dataBase;
Button btn_r1,btn_r2,btn_r3,btn_r4;
String [] TR_WORDS;
String [] EN_WORDS;
String [] Answer;
int control_id = 0;
int random ;
Random control;
Random rnd;
int tr,en;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_words);
    textView = (TextView) findViewById(R.id.textView);
    deneme   = (TextView) findViewById(R.id.textView3);
    dataBase = new DataBase(getApplicationContext());
    rnd= new Random();

    btn_r1 = (Button)findViewById(R.id.button_random1);
    btn_r1.setOnClickListener(new myClickListener());
    btn_r2 = (Button)findViewById(R.id.button_random2);
    btn_r2.setOnClickListener(new myClickListener());
    btn_r3 = (Button)findViewById(R.id.button_random3);
    btn_r3.setOnClickListener(new myClickListener());
    btn_r4 = (Button)findViewById(R.id.button_random4);
    btn_r4.setOnClickListener(new myClickListener());

    ArrayList<Words> enWordlist  = (ArrayList<Words>) dataBase.allEnWords();
    ArrayList<Words> trWordlist  =(ArrayList<Words>) dataBase.allTrWords();

    TR_WORDS = new String[trWordlist.size()];
    EN_WORDS = new String[enWordlist.size()];

    for(int i=0;i<enWordlist.size();i++){
        EN_WORDS[i] =enWordlist.get(i).getWORD().toString();
        TR_WORDS[i] =trWordlist.get(i).getTR1().toString();
    }


    tr = new Random().nextInt(TR_WORDS.length);

        /*btn_r1.setText(TR_WORDS[en]);
        btn_r2.setText(TR_WORDS[new Random().nextInt(TR_WORDS.length)]);
        btn_r3.setText(TR_WORDS[new Random().nextInt(TR_WORDS.length)]);
        btn_r4.setText(TR_WORDS[new Random().nextInt(TR_WORDS.length)]);*/

    ReStart();

}

private class myClickListener implements View.OnClickListener{
    public void onClick(View v){

        switch ( v.getId() ) {
            case R.id.button_random1:
                break;
            case R.id.button_random2:
                break;
            case R.id.button_random3:
                break;
            case R.id.button_random4:
                break;
            default:
                break;
        }
        WordsActivity.this.ReStart();
    }

}

public void ReStart(){


    Answer = new String[4];
    control = new Random();
    control_id = control.nextInt(4);
    en = new Random().nextInt(EN_WORDS.length);

    final List<String> newTRList = new ArrayList<>();
    textView.setText(EN_WORDS[en]);
    final int sayi1,sayi2;
    sayi1 = TR_WORDS.length;
    Collections.addAll(newTRList,TR_WORDS);

    // I added true turkish word in answer array
    for(int i=0;i<TR_WORDS.length;i++){
        if(en == i){
            Answer[control_id]=TR_WORDS[i].toString();
            newTRList.remove(TR_WORDS[i].toString()); //remove true value from array in order to not use again.
        }
    }

    TR_WORDS = newTRList.toArray(new String[newTRList.size()]);

    //I added another values in answer array and I want to remove values that is used because
    //I dont want to see same value in answer array.
    for(int i=0;i<=3;i++){
        if(i == control_id){

        }
        else if(i == 0){
            random=rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 1){
            random=rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 2){
            random=rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 3){
            random=rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
    }
    sayi2 =TR_WORDS.length;

    deneme.setText(sayi1+"/"+sayi2);

    for(int i=0;i<=3;i++){

        if(i == control_id){

        }
        else if(i == 0){
            random =rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 1){
            random =rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 2){
            random =rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }
        else if(i == 3){
            random =rnd.nextInt(TR_WORDS.length);
            Answer[i]=TR_WORDS[random];
        }

    }

    for(int j=0;j<=3;j++){

        if(j==0){
            btn_r1.setText(Answer[j].toString());
        }
        else if(j==1){
            btn_r2.setText(Answer[j].toString());
        }
        else if(j==2){
            btn_r3.setText(Answer[j].toString());
        }
        else if(j==3){
            btn_r4.setText(Answer[j].toString());
        }
    }

}
}
package de.muratekinlive.pwords;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入java.util.Random;
公共类WordsActivity扩展了AppCompatActivity{
文本视图文本视图;
TextView deneme;
数据库;
按钮btn_r1、btn_r2、btn_r3、btn_r4;
字符串[]TR_单词;
字符串[]EN_单词;
字符串[]答案;
int control_id=0;
int随机;
随机控制;
随机rnd;
int tr,en;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_words);
textView=(textView)findViewById(R.id.textView);
deneme=(TextView)findViewById(R.id.textView3);
数据库=新数据库(getApplicationContext());
rnd=新随机数();
btn_r1=(按钮)findViewById(R.id.Button_random1);
btn_r1.setOnClickListener(新的myClickListener());
btn_r2=(按钮)findViewById(R.id.Button_random2);
btn_r2.setOnClickListener(新的myClickListener());
btn_r3=(按钮)findViewById(R.id.Button_random3);
btn_r3.setOnClickListener(新的myClickListener());
btn_r4=(按钮)findViewById(R.id.Button_random4);
btn_r4.setOnClickListener(新的myClickListener());
ArrayList enWordlist=(ArrayList)数据库.allEnWords();
ArrayList trWordlist=(ArrayList)数据库.allTrWords();
TR_WORDS=新字符串[trWordlist.size()];
EN_WORDS=新字符串[enWordlist.size()];

for(int i=0;i将for循环更改为:

for(int i=TR_WORDS.length; i >=0 ;i--){
    if(en == i){
        Answer[control_id]=TR_WORDS[i].toString();
        newTRList.remove(TR_WORDS[i].toString()); //remove true value from array in order to not use again.
    }
}

以及所有其他以类似方式包含删除的日志。

请检查您的日志并共享错误日志并标记它指向的行,好吗?