In: Computer Science
need to add these functions to my code: • show only important tasks • show all completed tasks
My code in java:
import java.util.ArrayList;
import java.util.*;
public class TodoList {
    String date="";
    String work="";
    boolean completed=false;
    boolean important=false;
    public TodoList(String a,String b,boolean c,boolean d){
        this.date=a;
        this.work=b;
        this.completed=c;
        this.important=d;
    }
    public boolean isCompleted(){
        return this.completed;
    }
    public boolean isImportant(){
        return this.important;
    }
    public String getDate(){
        return this.date;
    }
    public String getTask(){
        return this.work;
    }
}
 class Main{
    public static void main(String[] args) {
        ArrayList<TodoList> t1=new ArrayList<TodoList>();
        TodoList t2=null;
        Scanner s=new Scanner(System.in);
        int a;
        String b="",c="";
        boolean d,e;
        char g;
        do{
            System.out.println("1 Add a Task\n2 Show All Task\n3 Show Completed Task\n4 Delete a task");
            a=s.nextInt();
            switch(a){
                case 1:
                    System.out.println("enter the date");
                    b=s.next();
                    System.out.println("enter the task");
                    c=s.next();
                    System.out.println("enter the task is important true/false");
                    e=s.nextBoolean();
                    System.out.println("enter the task is completed true/false");
                    d=s.nextBoolean();
                    t2=new TodoList(b,c,d,e);
                    t1.add(t2);
                    break;
                case 2:
                    for(int i=0;i<t1.size();i++)
                    {
                        b=t1.get(i).getDate();
                        c=t1.get(i).getTask();
                        d=t1.get(i).isCompleted();
                        e=t1.get(i).isImportant();
                        System.out.println("Date: "+b+"\tTask: "+c+"\tCompleted: "+d+"\tImportant: "+e);
                    }
                    break;
                case 3:
                    for(int i=0;i<t1.size();i++)
                    {
                        b=t1.get(i).getDate();
                        c=t1.get(i).getTask();
                        d=t1.get(i).isCompleted();
                        e=t1.get(i).isImportant();
                        if(d){
                            System.out.println("Date: "+b+"\tTask: "+c+"\tCompleted: "+d+"\tImportant: "+e);
                        }
                    }
                    break;
                case 4:
                    System.out.println("Enter task number to delete");
                    int f=s.nextInt();
                    for(int i=f;i<t1.size()-1;i++){
                        t1.set(i,t1.get(i+1));
                    }
                    break;
                default:
                    System.out.println("Error");
                    break;
            }
            System.out.println("Continue: Y/N");
            g=s.next().charAt(0);
        }while((g=='y')||(g=='Y'));
    }
}
//I have made some improvments in code along with requirements............please review it....
//Java Code
import java.util.ArrayList;
import java.util.*;
public class TodoList {
    private String date="";
    private String work="";
    private boolean completed=false;
    private boolean important=false;
    public TodoList(String a,String b,boolean c,boolean d){
        this.date=a;
        this.work=b;
        this.completed=c;
        this.important=d;
    }
    public boolean isCompleted(){
        return this.completed;
    }
    public boolean isImportant(){
        return this.important;
    }
    public String getDate(){
        return this.date;
    }
    public String getTask(){
        return this.work;
    }
    @Override
    public String toString() {
        return "Date: "+date+"\tTask: "+work+"\tCompleted: "+completed+"\tImportant: "+important;
    }
}
class Main{
    public static void main(String[] args) {
        ArrayList<TodoList> t1=new ArrayList<TodoList>();
        TodoList t2=null;
        Scanner s=new Scanner(System.in);
        int a;
        String b="",c="";
        boolean d,e;
        char g='Y';
        do{
            try {
                System.out.println("1 Add a Task\n2 Show All Task\n3 Show Completed Task\n4. Show Only Important Tasks \n5. Delete a task");
                a = s.nextInt();
                s.nextLine();
                switch (a) {
                    case 1:
                        System.out.println("enter the date");
                        b = s.nextLine();
                        System.out.println("enter the task");
                        c = s.nextLine();
                        System.out.println("enter the task is important true/false");
                        e = s.nextBoolean();
                        System.out.println("enter the task is completed true/false");
                        d = s.nextBoolean();
                        s.nextLine();
                        t2 = new TodoList(b, c, d, e);
                        t1.add(t2);
                        System.out.println("task added...");
                        break;
                    case 2:
                        //Show all tasks
                        for (TodoList todoList : t1) {
                            System.out.println(todoList);
                        }
                        break;
                    case 3:
                        boolean found1 = false;
                        //Show completed Tasks
                        for (TodoList todo : t1) {
                            if (todo.isCompleted()) {
                                found1 = true;
                                System.out.println(todo);
                            }
                        }
                        if (!found1) {
                            System.out.println("No completed task to show...");
                        }
                        break;
                    case 4:
                        //show only important tasks
                        boolean found = false;
                        for (TodoList todo : t1
                        ) {
                            if (todo.isImportant()) {
                                found = true;
                                System.out.println(todo);
                            }
                        }
                        if (!found) {
                            System.out.println("No important task to show...");
                        }
                        break;
                    case 5:
                        System.out.println("Enter task number to delete");
                        int f = s.nextInt();
                        s.nextLine();
                        if (f >= 0 && f < t1.size()) {
                            System.out.println(t1.get(f).getTask() + " deleted...");
                            t1.remove(f);
                        } else {
                            System.out.println("No task to delete...");
                        }
                        break;
                    default:
                        System.out.println("Error");
                        break;
                }
            }
            catch (InputMismatchException|ArrayIndexOutOfBoundsException ex)
            {
                System.out.println(ex.getMessage());
                s.nextLine();
            }
                System.out.println("Continue: Y/N");
                g = s.nextLine().toUpperCase().charAt(0);
        }while(g=='Y');
    }
}
//Output

//If you need any help regarding this solutionn...... please leave a comment........ thanks