TheAlgorithms/Java · error · IllegalArgumentException

Unexpected value: {choice}

Error message

Unexpected value: {choice}

What it means

Thrown by the default branch of the switch in MainCuckooHashing.main. The menu defines cases 1-7 (add, delete, print, exit, search, load factor, rehash); any other integer entered at the prompt reaches default and aborts. This is a defensive guard for invalid interactive input, not a library API contract.

Source

Thrown at src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java:66

                scan.close();
                return;

            case 5:
                System.out.println("Enter the Key to find and print:  ");
                key = scan.nextInt();
                System.out.println("Key: " + key + " is at index: " + h.findKeyInTable(key) + "\n");
                break;

            case 6:
                System.out.printf("Load factor is: %.2f%n", h.checkLoadFactor());
                break;

            case 7:
                h.reHashTableIncreasesTableSize();
                break;

            default:
                throw new IllegalArgumentException("Unexpected value: " + choice);
            }
        }
    }
}

View on GitHub (pinned to fdfb9a395b)

Solutions

  1. Enter an integer strictly in the range 1-7 at the prompt.
  2. Add input validation (range check) before the switch and re-prompt on invalid input instead of throwing.
  3. If a new feature was intended, add the corresponding case label and keep default as a true error path.

Example fix

// before
default:
    throw new IllegalArgumentException("Unexpected value: " + choice);

// after
default:
    System.out.println("Invalid choice " + choice + "; please enter 1-7.");
    break;
Defensive patterns

Strategy: validation

Validate before calling

// Validate menu input before the switch
if (choice < 1 || choice > 7) {
    System.out.println("Please enter a number between 1 and 7.");
    continue;
}

Prevention

When it happens

Trigger: Typing 0, 8, 9, or any integer outside 1-7 at the 'Enter your Choice' prompt; an automated harness piping an unexpected int into stdin; adding a new menu item to the println list but forgetting the matching case.

Common situations: User typo at the console; test/automation feeding raw ints; menu/case drift after editing only one half of the switch.

Related errors


AI-assisted analysis of TheAlgorithms/Java@fdfb9a395b (2026-08-13). Data as JSON: /api/errors/cc2e3279d012b2f2. Report an issue: GitHub.