CodeBlanks Logo Icon CodeBlanks

Görev tamamlama

completeTask ile durumu güncellersin.

Görev tamamlama: completeTask

Şimdi bir görevi tamamlandı olarak işaretleyen completeTask(int index) metodunu ekleyeceğiz. Bu metot, ilgili indeksteki görevin done alanını true yapar.

void completeTask(int index) {
  tasks.get(index).done = true;
}

Burada tasks.get(index) ile o indeksteki Task nesnesini alır, sonra .done = true ile durumunu güncelleriz. Nesne referansı aynı kaldığı için değişiklik listedeki görevde kalıcı olur.

Geçersiz indeks tehlikesi

Eğer completeTask'e listede olmayan bir indeks geçersen, tasks.get(index) bir IndexOutOfBoundsException fırlatır. Bunu önlemek için metodun başında sınır kontrolü yapabilirsin.

void completeTask(int index) {
  if (index < 0 || index >= tasks.size()) return;
  tasks.get(index).done = true;
}

Şimdilik bu kontrolü eklemiyoruz; ama gerçek bir uygulamada kullanıcıdan gelen indeksi her zaman doğrulamak iyi bir uygulamadır.

Uygulama completeTask metodunu yaz

TodoList içine void completeTask(int index) metodunu tanımla; gövde tasks.get(index).done = true yapsın. main içinde iki görev ekle, list.completeTask(0) çağır ve list.listTasks() ile yazdır.

Başlangıç kodu

Main.java
import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    TodoList list = new TodoList();
    list.addTask("Alışveriş");
    list.addTask("Ödev");
    // İlk görevi tamamlandı olarak işaretle
    // Görevleri listele
  }
}

class Task {
  String title;
  boolean done;
  Task(String title) {
    this.title = title;
    this.done = false;
  }
  public String toString() {
    return (done ? "[x] " : "[ ] ") + title;
  }
}

class TodoList {
  ArrayList<Task> tasks = new ArrayList<>();
  void addTask(String title) {
    tasks.add(new Task(title));
  }
  void listTasks() {
    for (Task t : tasks) {
      System.out.println(t);
    }
  }
  // completeTask(int index) metodunu tanımla: o indeksteki görevi tamamla
}

Örnek çözüm

Main.java
// TodoList içinde:
void completeTask(int index) {
  tasks.get(index).done = true;
}
// main içinde:
list.completeTask(0);
list.listTasks();

Beklenen çıktı

[x] Alışveriş
[ ] Ödev

Soru ve cevaplar

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

1 tasks.get(0) ne döner?

  • İlk Task nesnesi
  • İlk görevin başlığı
  • boolean done Doğru cevap
  • 0 indeksi

Açıklama: get(0) ilk Task nesnesinin kendisini döner.

2 Çağrı ve anlamı eşleştir

Kavram Anlamı
tasks.get(0) İlk görev nesnesi
tasks.get(0).done = true İlk görevi tamamla
tasks.size() Görev sayısı
tasks.add(new Task(...)) Yeni görev ekle

3 Boşluğu doldur: görevi tamamla

Soru
void completeTask(int index) {
  tasks.____(index).done = true;
}
Cevap
void completeTask(int index) {
  tasks.get(index).done = true;
}

Açıklama: tasks.get(index).done = true görevi tamamlar.

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