2017-02-11 2 views
0

Я пытаюсь создать приложение, которое подобно лексической карте. У меня есть массив ответов (размер массива = 4). Я создаю случайное английское слово, тогда я добавляю истинное значение английского слова в массиве ответов, и я удаляю истинное значение английского слова в турецком массиве, чтобы не использовать снова случайным образом. Я делаю то же самое с другим массивом ответов включают неправильное значение.Я пытаюсь создать цикл словаря в android

Проблема в том, что размер массива будет равен 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()); 
     } 
    } 

} 
} 
+0

Можете ли вы проверить свой логарифм и поделиться журналом ошибок и отметить строку, на которую она указывает, пожалуйста? –

ответ

0

ИЗМЕНИТЬ СВОЮ цикл для:

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

И все остальные, которые включают в себя удалить в подобной моде.

Смежные вопросы