CodeBlanks Logo Icon CodeBlanks

varargs

int... ile esnek parametreyi öğrenirsin.

varargs: esnek parametre sayısı

Bazen kaç argüman geleceğini önceden bilemezsin. int... yazarak esnek sayıda int alabilen bir parametre tanımlarsın. Buna varargs denir.

static int sum(int... nums) {
  int total = 0;
  for (int n : nums) total += n;
  return total;
}
sum(1, 2, 3);    // 6
sum();           // 0

Metot içinde nums bir int[] gibi davranır. For-each ile gezebilir, nums.length alabilirsin. varargs parametresi metodun son parametresi olmalıdır.

varargs ve for-each

varargs'ın içinde dolaşmak için for-each çok uygundur. Çünkü nums bir dizi gibi davranır; sırayla elemanları verir.

static int max(int... nums) {
  int best = Integer.MIN_VALUE;
  for (int n : nums) {
    if (n > best) best = n;
  }
  return best;
}

Burada Integer.MIN_VALUE, int'in alabileceği en küçük değerdir. Böylece boş çağrıda bile best başlangıçta mantıklı bir değerde olur. Döngüden sonra en büyük eleman döner.

Uygulama Esnek toplam metodu

sum adında static int metot tanımla; parametre int... nums. Gövde, tüm elemanları toplayıp döndürsün. main içinden sum(1, 2, 3, 4) çağırıp sonucu yazdır.

Başlangıç kodu

Main.java
public class Main {
  public static void main(String[] args) {
    // Metodu 1, 2, 3, 4 argümanlarıyla çağır ve sonucu yazdır
  }
  // sum metodunu buraya tanımla
}

Örnek çözüm

Main.java
static int sum(int... nums) {
  int total = 0;
  for (int n : nums) total += n;
  return total;
}
// main içinde:
System.out.println(sum(1, 2, 3, 4));

Beklenen çıktı

10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 varargs parametresi metodun hangi konumunda olur?

  • Sadece son konumda
  • İlk konumda
  • Sadece tek parametreli metodlarda
  • Herhangi bir konumda Doğru cevap

Açıklama: varargs daima son parametre olmalı; yoksa belirsizlik doğar.

2 Çağrı ve nums içeriği eşleştir

Kavram Anlamı
sum(1, 2, 3) {1, 2, 3}
sum() {}
sum(7) {7}
sum(1, 1, 1, 1) {1, 1, 1, 1}

3 Boşluğu doldur: varargs tanımı

Soru
static int sum(int____ nums) {
  int total = 0;
  for (int n : nums) total += n;
  return total;
}
Cevap
static int sum(int... nums) {
  int total = 0;
  for (int n : nums) total += n;
  return total;
}

Açıklama: int... ile varargs tanımlanır.

Başlangıç bölümündeki tüm dersler