Birleştirme
- Java kursu
- Başlangıç
- Ders 87/116
- 6 dk
Menü döngüsüyle CLI uygulaması yazarsın.
Birleştirme: komut döngüsü
Son adımda tüm parçaları birleştirip bir komut döngüsü kuracağız. Komutlar bir String[] olarak gelir; her biri ya add:X ya list ya da done:N biçimindedir.
for (String cmd : commands) {
if (cmd.startsWith("add:")) {
list.addTask(cmd.substring(4));
} else if (cmd.equals("list")) {
list.listTasks();
} else if (cmd.startsWith("done:")) {
int idx = Integer.parseInt(cmd.substring(5));
list.completeTask(idx);
}
}substring(4) ile başlığı, Integer.parseInt ile indeksi çıkarırız. Bu yapı, gerçek bir menü döngüsünün iskeletidir; kullanıcıdan girdi almayı ileride göreceğiz.
Projeyi bütünleştirme
Bu derste tüm metotları (Task, TodoList, addTask, listTasks, completeTask) bir araya getirdik. Komut döngüsü, kullanıcı girdisini taklit eden bir dizi üzerinde çalışır.
Gerçek bir CLI uygulamasında komutlar String[] args ya da Scanner ile okunur. Scanner'ı bir sonraki grupta göreceksin; o zaman bu iskeleti canlı kullanıcı girdisine bağlayabilirsin.
Şimdi senden bu döngüyü yazmanı istiyoruz: komutları sırayla işle, her birini ilgili metoda yönlendir.
Uygulama Komut döngüsünü yaz
main içindeki commands dizisini for-each ile gez. Her komut için: add:X ise list.addTask(cmd.substring(4)), list ise list.listTasks(), done:N ise list.completeTask(Integer.parseInt(cmd.substring(5))) çağır.
Başlangıç kodu
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
TodoList list = new TodoList();
String[] commands = {"add:Alışveriş", "add:Ödev", "list", "done:0", "list"};
// Komutları sırayla işle: add:X, list, done:N
}
}
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);
}
}
void completeTask(int index) {
tasks.get(index).done = true;
}
}Örnek çözüm
for (String cmd : commands) {
if (cmd.startsWith("add:")) {
list.addTask(cmd.substring(4));
} else if (cmd.equals("list")) {
list.listTasks();
} else if (cmd.startsWith("done:")) {
int idx = Integer.parseInt(cmd.substring(5));
list.completeTask(idx);
}
}Beklenen çıktı
[ ] Alışveriş [ ] Ödev [x] Alışveriş [ ] Ödev
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boşluğu doldur: komut türünü bul
if (cmd.____("add:")) {
list.addTask(cmd.substring(4));
}
if (cmd.startsWith("add:")) {
list.addTask(cmd.substring(4));
}
Açıklama: cmd.startsWith("add:") ile önek kontrol edilir.
2 Integer.parseInt(cmd.substring(5)) ne yapar?
- Bir hata fırlatır
- "done:" önekini kaldırır
- cmd'i 5'e böler
- "done:0"'dan 0 sayısını çıkarır Doğru cevap
Açıklama: substring(5) "0" verir, parseInt onu int'e çevirir.
3 Komut ve eylemi eşleştir
| Kavram | Anlamı |
|---|---|
add:Alışveriş |
Yeni görev ekle |
list |
Görevleri yazdır |
done:0 |
İlk görevi tamamla |
done:1 |
İkinci görevi tamamla |