CodeBlanks Logo Icon CodeBlanks

Skor hesaplama

score ile doğru sayısını ve yüzdesini hesaplarsın.

Skor hesaplama

Dördüncü ders skor hesaplayan bir metot ekler. check metodu, verilen cevabı sorunun cevabıyla karşılaştırır. score alanı doğru sayısını tutar. Bu, quiz'in temel işlevidir.

Örnek: int score = 0; int check(String[] answers) { for (int i = 0; i < count; i++) { if (answers[i].equals(questions[i].answer)) score++; } return score; }. Bu metot, her sorunun cevabını verilen cevaplarla karşılaştırır. Doğru eşleşme varsa score artar. equals metodu dizge karşılaştırması için kullanılır; == referans karşılaştırır ve yanlış sonuç verebilir. Metot, toplam doğru sayısını döndürür.

equals vs ==

Java'da dizgeler equals ile karşılaştırılır. == operatörü içeriği değil, referansları karşılaştırır. İki dizge aynı içeriğe sahip olsa bile == yanlış dönebilir.

Örnek: new String("evet").equals(new String("evet")) true döner; çünkü içerik aynı. Ama new String("evet") == new String("evet") false döner; çünkü iki ayrı nesne farklı referanslara sahiptir. Bu yüzden dizge karşılaştırmasında her zaman equals kullanılır. Quiz skor hesaplamasında answers[i].equals(questions[i].answer) doğru yöntemdir. == kullanırsan skor her zaman sıfır kalabilir.

Uygulama Quiz'e check metodu ekle

Quiz sınıfına int score = 0 alanını ekle. int check(String[] answers) metodu ekle; gövdesinde for döngüsü ile i sıfırdan count'a kadar dönsün. Her adımda if (answers[i].equals(questions[i].answer)) score++; yaz. Metot score döndürsün. main içinde bir Quiz örneği oluştur, iki soru ekle, String[] answers = {"Ankara", "İzmir"} ile check çağır ve sonucu yazdır.

Başlangıç kodu

Main.java
class Question {
    String text;
    String answer;
    Question(String t, String a) {
        text = t;
        answer = a;
    }
    public String toString() {
        return text + " = " + answer;
    }
}
class Quiz {
    Question[] questions;
    int count;
    Quiz() {
        questions = new Question[10];
        count = 0;
    }
    void add(Question q) {
        questions[count] = q;
        count++;
    }
    void display() {
        for (int i = 0; i < count; i++) {
            System.out.println(questions[i]);
        }
    }
}

// Quiz'e score ve check metodu ekle
// equals ile cevapları karşılaştır
// main içinde örnekle ve check çağır

Örnek çözüm

Main.java
class Question {
    String text;
    String answer;
    Question(String t, String a) {
        text = t;
        answer = a;
    }
    public String toString() {
        return text + " = " + answer;
    }
}
class Quiz {
    Question[] questions;
    int count;
    int score;
    Quiz() {
        questions = new Question[10];
        count = 0;
        score = 0;
    }
    void add(Question q) {
        questions[count] = q;
        count++;
    }
    void display() {
        for (int i = 0; i < count; i++) {
            System.out.println(questions[i]);
        }
    }
    int check(String[] answers) {
        for (int i = 0; i < count; i++) {
            if (answers[i].equals(questions[i].answer)) score++;
        }
        return score;
    }
    public static void main(String[] args) {
        Quiz quiz = new Quiz();
        quiz.add(new Question("Başkent", "Ankara"));
        quiz.add(new Question("Şehir", "İstanbul"));
        String[] answers = {"Ankara", "İzmir"};
        System.out.println(quiz.check(answers));
    }
}

Beklenen çıktı

1

Soru ve cevaplar

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

1 equals ile karşılaştırmayı tamamla

Soru
if (answers[i].____(questions[i].answer)) {
    score++;
}
Cevap
if (answers[i].equals(questions[i].answer)) {
    score++;
}

Açıklama: Dizge karşılaştırması equals ile yapılır.

2 Skor bölümlerini eşle

Kavram Anlamı
int score Doğru sayısı
answers[i].equals(...) Karşılaştırma
score++ Artış
return score Dönüş

3 İki dizge içeriğini karşılaştırmak için hangi metot kullanılır?

  • ==
  • same
  • equals Doğru cevap
  • compare

Açıklama: Equals — dizge içeriği equals ile karşılaştırılır.

Orta seviye bölümündeki tüm dersler