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

时间:2017-02-11 18:43:05

标签: java android arrays loops

我正在尝试制作类似词汇卡的应用。 我有一个Answer数组(数组大小= 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());
        }
    }

}
}

1 个答案:

答案 0 :(得分:0)

将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.
    }
}

所有其他包含以类似方式删除的内容。