View Full Version : Random تکراری
  
pouya1999best@g
شنبه 08 شهریور 1393, 13:16 عصر
سلام؛
من میخوام وقتی وارد برنامه میشم یک Toast حاوی یکی از اعداد 1تا 4 بصورت تصادفی نشان داده بشه و برای اینکار از Random استفاده میکنم.
اما توی خیلی از موارد اعداد تکراری نشان داده میشن.یعنی مثلا چهار بار بطور پشت سر هم عدد 3 نشون داده میشه؛میخوام وقتی یک عدد تصادفی نشان داده شد دیگه نمایش داده نشه تا اعداد دیگر هم نمایش داده بشن و بعد از اینکه همه نمایش داده شدن،دوباره مجاز به نمایش بشه؛این اتفاق روی همه این اعداد بیفته(1،2،3،4)
اگه میشه کمکم کنید.
ho3ein.3ven
شنبه 08 شهریور 1393, 14:22 عصر
سلام .
از shared preferences استفاده کنید .
 در هر بار ورود اعداد انتخاب شده قبلی موجود در shared preferences را بررسی کنید .
pouya1999best@g
شنبه 08 شهریور 1393, 14:32 عصر
چجوری؛نمونه کد دارید؟؟؟
NeoFighT
شنبه 08 شهریور 1393, 16:36 عصر
بفرما از این استفاده کن
ولی فکر کنم ساده تر و استاندارد تر از این هم میشه نوشت ولی این هم جواب میده.:متفکر:
import java.util.ArrayList;
import java.util.Random;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
    final int NUMS = 4;
    SharedPreferences sp;
    SharedPreferences.Editor edit;
    ArrayList<Integer> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp = getSharedPreferences("mySp",MODE_PRIVATE);
        edit = sp.edit();
        list = new ArrayList<>();
        if(sp.getBoolean("isFirst",true)){
            Toast.makeText(getBaseContext(),"Repeat...",Toast.LENGTH_SHORT).show();
            for(int i=1;i<=NUMS;i++){
                edit.putBoolean("int_" + i,false);
            }
            edit.putBoolean("isFirst", false);
            edit.commit();
        }
        for(int i=1;i<=NUMS;i++){
            if(!sp.getBoolean("int_"+i,false))
                list.add(i);
        }
        if(list.size()==0){
            edit.putBoolean("isFirst",true);
            edit.commit();
            return;
        }else{
            Random r = new Random();
            int i = r.nextInt(list.size());
            int n = list.get(i);
            edit.putBoolean("int_"+n,true);
            edit.commit();
            Toast.makeText(getBaseContext(),"--" + n + "--",Toast.LENGTH_SHORT).show();
            if(list.size()==1){
                edit.putBoolean("isFirst",true);
                edit.commit();
                return;
            }
        }
    }
}
pouya1999best@g
شنبه 08 شهریور 1393, 18:56 عصر
کارت عالیه پسر؛
حیف که فقط با دکمه تشکر میتونم ازت تشکر کنم:قلب:
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.