Java · 2024-2025 · Final

2024-2025 Java Final Sınavı

Cevaplar ve açıklamalar

Soru 1: Kullanıcıdan kesirli sayı tipinde boy bilgisini cm olarak alan ve ideal kiloyu verilen formüle göre hesaplayıp ekrana yazdıran metodu yazınız.

Formül: Ideal kilo = (boy - 150) × 0.9 + 50

Boy bilgisi ondalıklı olabileceği için double kullanmak uygundur.

public static void idealKiloHesapla(double boy) {
    double idealKilo = (boy - 150) * 0.9 + 50;
    System.out.println("Ideal kilonuz: " + idealKilo + " kg");
}
Örnek: Boy = 170
Sonuç = 68.0 kg

Analiz: Gerçek uygulamalarda girdi doğrulaması eklenebilir ve çıktı String.format("%.2f", idealKilo) ile biçimlendirilebilir.

Soru 2: Kullanıcıdan bir tamsayı değer alan ve girilen sayının tek mi çift mi olduğunu yazdıran metodu yazınız.

Bir sayının çift olup olmadığını belirlemek için mod operatörü kullanılır.

public static void tekCiftKontrol(int sayi) {
    if (sayi % 2 == 0) {
        System.out.println(sayi + " çift bir sayıdır.");
    } else {
        System.out.println(sayi + " tek bir sayıdır.");
    }
}
6 → çift
7 → tek

Analiz: Negatif sayılar için de aynı kontrol doğru çalışır.

Soru 3: Aşağıda boş bırakılan yere okul numaranızı yazınız. Kod çalıştırıldıktan sonra ekran çıktısı ne olur?

int sayi = 12345;
int toplam = 0;

while (sayi > 0) {
    toplam += sayi % 10;
    sayi = sayi / 10;
    System.out.print(toplam + " ");
}

Kod sayının rakamlarını sağdan sola işler ve her adımda kümülatif toplamı yazdırır.

  1. 5 → toplam 5
  2. 4 → toplam 9
  3. 3 → toplam 12
  4. 2 → toplam 14
  5. 1 → toplam 15
Çıktı: 5 9 12 14 15

Analiz: Çalışma süresi basamak sayısıyla orantılıdır, yani O(log n).

Soru 4: Parametre olarak bir dizi alan ve tek elemanları 3 ile, çift elemanları 2 ile çarpıp güncel diziyi geri döndüren metodu yazınız.

Kaynak dosyada bu sorunun çözümündeki koşulda bir sözdizimi hatası vardı. Aşağıda düzeltilmiş sürüm yer alıyor.

public static int[] diziCarp(int[] dizi) {
    for (int i = 0; i < dizi.length; i++) {
        if (dizi[i] % 2 == 0) {
            dizi[i] *= 2;
        } else {
            dizi[i] *= 3;
        }
    }

    return dizi;
}
Girdi: [1, 2, 3, 4, 6]
Çıktı: [3, 4, 9, 8, 12]

Analiz: Dizi yerinde güncellenir ve algoritma O(n) zamanda çalışır.

Soru 5: Aşağıda boş bırakılan yere ad ve soyadınızı yazınız. Kod çalıştırıldıktan sonra ekran çıktısı ne olur?

String kelime = "Ahmet Yilmaz";

for (int i = 1; i < kelime.length(); i += 2) {
    System.out.print("-" + kelime.charAt(i));
}

Döngü 1. indisten başlar ve her seferinde 2 artar; yani string içindeki tek indeksli karakterleri yazdırır.

Örnek çıktı: -h-e- -i-m-z

Analiz: İşlem yaklaşık n/2 karakteri ziyaret eder ve O(n) zaman karmaşıklığına sahiptir.