Bu gece Java'da metodları öğrendik ve metod overloading konusu ile birlikte inceledik. Önce 2 adet sayının çarpımını hesaplayarak döndüren bir metod yazdık, sonra da çarpmamız gereken sayıların adedinin 2 yerine 3 de olabileceğini dikkate alarak yeni bir metod imzası ürettik. Peki ya çarpmamız gereken sayılar 5 tane olsaydı? 10 tane? 50 tane? Biz her parametre sayısı için ayrı bir metod imzası mı kodlamak zorundayız? Bu açıklamayı yazdığıma göre belli ki bu problemin bir çözümü var. Mesela istediğimiz sayıda eleman saklayan bir vektörü metod parametresi olarak tanımlayabiliriz değil mi? En iyi yol bu olmasa da evet bu mümkün.
public static void main(String [] args) {
int[] sayilar1 = {2,3,4};
int[] sayilar2 = {2,3,4,5};
int[] sayilar3 = {2,3,4,5,8,11,20};
System.out.println(carp(sayilar1)); //24
System.out.println(carp(sayilar2)); //120
System.out.println(carp(sayilar3)); //211200
}
public static int carp (int[] sayilar)
{
int carpim=1;
for (int i=0; i<sayilar.length; i++)
carpim*=sayilar[i];
return carpim;
}
Peki değişke sayıda ve türde parametre ile çağırabileceğimiz bir metodu nasıl tanımlayabiliriz?
public static void main(String [] args) {
System.out.println(carp(2,3,4)); //24
System.out.println(carp(2,3,4,5)); //120
System.out.println(carp(2,3,4,5,8,11,20)); //211200
}
public static int carp(int... sayilar)
{
int carpim=1;
for (int sayi : sayilar)
{
carpim=carpim*sayi;
}
return carpim;
}