Soru & Cevap

Dizi'deki elemanın tekrar gelmemesini nasıl saglarım.

16.12.2015 - 12:55

Merhaba arkadaşlar

bi dizi oluşturdum uygulamamda
String[] elemanbilgileri= {

"eleman1",

"eleman2",

"eleman3

};  bu tarz ilerliyo ben bunları random komutu ile çagrabiliyorum ama tekrar gelmemesini saglıcak kodu tam olarak yazamadım hata veriyor nasıl bir kod yazmalıyım teşekkürler .


 

11 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user BSDEV
BSDEV
16.12.2015 - 10:55

yardımcı oldugunuz için sağolun arkadaşlar bir hatayla karşılaşırsam yazarım ama bi sıkıntı çıkacagını zanetmiyorum tekrar teşekkür ederim :)

teoman
05.02.2017 - 01:15
selam Fatih bey yukardaki problemin aynısını bende çözmeye çalışıyorum yukardakileri önerileri denedim halledemedım eğer sorunu halletiyseniz çözümünü paylaşabilir misiniz ?
picture-28812-1452251417.jpg
umutonur
16.12.2015 - 11:38

Merhabalar.. 
String dizisi yerine ArrayList kullanmak daha iyi olabilir.
Oluşturmuş olduğun String[] dizisindeki elemanları bir ArrayList'e kopyalarsın. Soruları bu ArrayList'ten sorup her kullandığın elemanı ArrayList'ten silersen soruları 1'er kez sormuş olursun. 

Koda dökecek olursak ; 

//bir arrayDizisi oluşturup elemanbilgileri dizisindeki elemanları array'a kopyalıyoruz.

ArrayList<String> arrayDizisi = new ArrayList<>();
for (String eleman : elemanbilgileri) {
     arrayDizisi.add(eleman);
}

Daha sonra arrayDizisinin elemanını random şekilde kullanıp, kullandığımız elemanı siliyoruz.

// random nesnemizi oluşturuyoruz.
Random random = new Random();

/* 
rastgele bir sayı belirliyoruz. buradaki arrayDizisi.size() dizinin eleman sayısını gösteriyor. 
yani dizimizde 10 tane eleman varsa; random olarak belirlenecek sayı 0 ile 9 arasında olacaktır.
*/

int i = random.nextInt(arrayDizisi.size());

//arrayDizisi.get() fonksiyonu ile belirttiğimiz index'teki elemanı çağırıyoruz..
System.out.println(arrayDizisi.get(i));

//burada da çağırdığımız (i indexli elemanı) diziden siliyoruz..
arrayDizisi.remove(i);

Array kullanımı ile ilgili internette çok fazla kaynak mevcut.
String[] dizilerine göre kullanımları daha kolay ve daha işlevseldir.

Kolay gelsin...

 

 

picture-1218-1380218412.jpg
burakiren
16.12.2015 - 11:36

Merhaba,

Gelen değerleri bir listede tutup, random fonksiyonunun oluşturduğu değeri liste içerisinde contains() metodu ile kontrol edip daha önce eklenenen bir değer değil ise değeri kabul edebilir veya zaten daha önce gelen bir değer ise yeni random değer üretebilirsiniz. Liste ve türevi bir yapı kullanırsanız yeni eleman ekleme ve liste içerisinde arama yapma açısından daha kolay olacaktır.

Kolay gelsin.

picture-2681-1428446445.jpg
volkankilic
16.12.2015 - 10:43

Merhaba Fatih,

Şöyle bir yol izleyebilirsin. Random gelen değerleri bir dizide tutup daha sonra oluşturulacak olan yeni değerle eski değrleri karşılaştırıp eğer çakışma varsa yeni bir değer göndermesini sağlayabilirsin.