Önceki örneğimizde sayısal loto ile 1 ile 49 arasındaki sayılardan benzersiz olarak 6 tanesini üreterek bir sayısal loto çekilişi programı yazmıştık. Şimdi bir de kupon dolduracağız ve kaç tane tutturduğumuzu kontrol edeceğiz. İnsanın şans faktörüne inandığım için doldurduğumuz kupondaki 6 adet sayının elle manuel olarak sisteme girilmesini istiyorum, bir sonraki örnekte de bunu otomatik hale getiririz. Sonuçların kontrolünü yapabilmek için çekiliş vektörü elemanlarını sıralamayı da ihmal etmeyelim.
Edit: 1 milyon adet kuponu otomatik olarak doldurarak kar-zarar hesabı yapan ibretlik sayısal loto örneği için tıklayın.
Kodlar:
public static void main(String [] args) {
Scanner girdi = new Scanner(System.in);
int[] cekilis = new int[6];
int[] kupon = new int[6];
//kuponumuzu dolduralım
for (int i=0; i<6; i++)
{
System.out.println("kuponunuz için "+(i+1)+". sayıyı yazınız");
kupon[i]=girdi.nextInt();
}
System.out.print("Kuponunuz: ");
System.out.println(Arrays.toString(kupon));
//çekiliş yapalım
for (int i=0; i<6; i++)
{
boolean kontrol=true;
while (kontrol)
{
int top=topCek();
kontrol = IntStream.of(cekilis).anyMatch(x -> x == top);
if(!kontrol)
cekilis[i]=top;
}
}
Arrays.sort(cekilis);
System.out.print("Çekiliş: ");
System.out.println(Arrays.toString(cekilis));
//kaç adet tuturduğumuzu kontrol edelim
int sayac=0;
for (int i=0; i<cekilis.length; i++)
{
for (int j=0; j<kupon.length; j++)
{
if (cekilis[i]==kupon[j])
sayac++;
}
}
System.out.println("Kuponunuzdaki " +sayac+ " sayı tuttu");
}
public static int topCek()
{
return (int)(Math.random()*49)+1;
}
Çıktı:
kuponunuz için 1. sayıyı yazınız
4
kuponunuz için 2. sayıyı yazınız
16
kuponunuz için 3. sayıyı yazınız
22
kuponunuz için 4. sayıyı yazınız
33
kuponunuz için 5. sayıyı yazınız
39
kuponunuz için 6. sayıyı yazınız
45
Kuponunuz: [4, 16, 22, 33, 39, 45]
Çekiliş: [20, 21, 32, 35, 37, 45]
Kuponunuzdaki 1 sayı tuttu