bean
bean

Reputation: 337

How to make a To-Do List in java?

I need to create a functioning To-Do list in java that allows a user to:

  1. Add an item

  2. Delete an item

  3. Show the list

  4. Delete all tasks

  5. Exit the program

I am currently having trouble adding an item to my list. Each time I enter an item to add this is the output I receive:

Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Test.menu(Test.java:50)
at Test.main(Test.java:11)

Here is what I have tried so far, any help would be greatly appreciated:

import java.util.Scanner;
import java.util.ArrayList;

public class Test {

public static void main(String[] args) {

    int menuItem = -1;

    while(menuItem !=0) {
        menuItem = menu();

        switch(menuItem) {

        case 1: 
            showList();
            break;

        case 2: 
            addItem();
            break;

        case 3: 
            removeItem();
            break;

        case 0: 
            break;

        default: 
            System.out.println("Enter a valid option");
        }

    }
}

public static int menu() {

int choice; 

Scanner keyboard = new Scanner(System.in);
System.out.println("Main Menu");
System.out.println();
System.out.println("0. Exit the program");
System.out.println("1. Display to-do list");
System.out.println("2. Add item to list");
System.out.println("3. Remove item from list");
System.out.println();
System.out.print("Enter choice: ");
choice = keyboard.nextInt();

return choice;
}

public static void showList() {

System.out.println("To-Do List");

Scanner input = new Scanner(System.in);
String line;
int number = 1;

while (input.hasNextLine()){
    line = input.nextLine();
    System.out.println(number + " ");
    System.out.println(line);
    ++number;
}

System.out.println();


}

public static void addItem() {

System.out.println("Add Item");

Scanner input = new Scanner(System.in);
System.out.println("Enter an item: ");
String item = input.nextLine();
System.out.println(item);


}

public static void removeItem() {

int choice;
showList();

Scanner input = new Scanner(System.in);
System.out.println("What do you want to remove?");
choice = input.nextInt();

ArrayList<String> items = new ArrayList<String>();
int number = 1;

Scanner input2 = new Scanner(System.in);
String item; 

while (input2.hasNextLine()) {
    item = input2.nextLine();

    if (number != choice) 
        items.add(item);

    ++number;   
}

for(int i = 0; i < items.size(); i++)
    System.out.println(items.get(i));

    }
}

Upvotes: 0

Views: 15810

Answers (2)

import java.util.ArrayList;
import java.util.Scanner;

public class TodoList {
    private static ArrayList<String> tasks = new ArrayList<>();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean exit = false;
        while (!exit) {
            System.out.println("\n1. Add Task");
            System.out.println("2. View Tasks");
            System.out.println("3. Remove Task");
            System.out.println("4. Exit");
            System.out.print("Choose an option: ");
            int choice = scanner.nextInt();
            scanner.nextLine(); // Consume newline character

            switch (choice) {
                case 1:
                    addTask(scanner);
                    break;
                case 2:
                    viewTasks();
                    break;
                case 3:
                    removeTask(scanner);
                    break;
                case 4:
                    exit = true;
                    break;
                default:
                    System.out.println("Invalid choice. Please try again.");
            }
        }
    }

    private static void addTask(Scanner scanner) {
        System.out.print("Enter task: ");
        String task = scanner.nextLine();
        tasks.add(task);
        System.out.println("Task added successfully.");
    }

    private static void viewTasks() {
        if (tasks.isEmpty()) {
            System.out.println("No tasks available.");
        } else {
            System.out.println("Tasks:");
            for (int i = 0; i < tasks.size(); i++) {
                System.out.println((i + 1) + ". " + tasks.get(i));
            }
        }
    }

    private static void removeTask(Scanner scanner) {
        if (tasks.isEmpty()) {
            System.out.println("No tasks available to remove.");
        } else {
            viewTasks();
            System.out.print("Enter task number to remove: ");
            int index = scanner.nextInt();
            if (index > 0 && index <= tasks.size()) {
                tasks.remove(index - 1);
                System.out.println("Task removed successfully.");
            } else {
                System.out.println("Invalid task number.");
            }
        }
    }
}

Upvotes: 0

Jimmy
Jimmy

Reputation: 1051

You are missing the actual operation of adding removing from the list. @DrMe go through these program you can find where you'r doing wrong. I hope this can help you

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TestToDoList {

    private static List<String> currentList = new ArrayList<String>();

    public static void main(String[] args) {

        int menuItem = -1;
        while (menuItem != 0) {
            menuItem = menu();
            switch (menuItem) {
            case 1:
                showList();
                break;
            case 2:
                addItem();
                break;
            case 3:
                removeItem();
                break;
            case 0:
                break;
            default:
                System.out.println("Enter a valid option");
            }
        }
    }

    public static int menu() {
        System.out.println();
        System.out.println("----------------------");
        System.out.println("Main Menu");
        System.out.println("----------------------");
        System.out.println("0. Exit the program");
        System.out.println("1. Display to-do list");
        System.out.println("2. Add item to list");
        System.out.println("3. Remove item from list");
        System.out.println();
        System.out.print("Enter choice: ");
        int choice = scanner.nextInt();
        return choice;
    }

    public static void showList() {
        System.out.println();
        System.out.println("----------------------");       
        System.out.println("To-Do List");
        System.out.println("----------------------");
        int number = 0;
        for (String item : currentList) {
            System.out.println(++number + " " + item);
        }
        System.out.println("----------------------");


    }

    public static void addItem() {
        System.out.println("Add Item");
        System.out.println("----------------------");
        System.out.print("Enter an item: ");
        Scanner scanner = new Scanner(System.in);
        String item = scanner.nextLine();
        currentList.add(item);
        showList();
    }

    public static void removeItem() {
        System.out.println("Remove Item");
        System.out.println("----------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("What do you want to remove?");
        int index = scanner.nextInt();
        if((index-1)<0 || index>currentList.size()) {
            System.out.println("Wrong index number! Please enter in range of 1 to "+currentList.size());            
        }else {
            currentList.remove(index-1);
        }
        System.out.println("----------------------");
        showList();


    }
}

Further improve using generic and utils methods.

Upvotes: 0

Related Questions