1

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));

    }
}
bean
  • 301
  • 1
  • 7
  • Does this answer your question? [Scanner is skipping nextLine() after using next() or nextFoo()?](https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo) – MarsAtomic Jun 16 '20 at 15:43
  • When posting a question, make sure you methodically list each step required to reproduce your problem, include the exact text of your error message and indicate which line of code the error message complains about. You can't assume people are going to run your code to see what the problem is -- in fact, most people who provide answers read the code without running it. – MarsAtomic Jun 16 '20 at 15:46

1 Answers1

0

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.

Jimmy
  • 282
  • 1
  • 10