InputMismatchException в алгоритме возврата

Я пытаюсь найти, сколько раз человек повторяет данное имя в матрице, но у меня есть это InputMismatchException, которое я не могу исправить. Я предполагаю, что проблема от переменной сканера, но я могу понять, в чем проблема.

private static char[][] words= { { 'n', 'i', 'k', 'i' }, { 'e', 'v', 'n', 'h', }, { 'i', 'n', 'a', 'v', },
        { 'm', 'v', 'v', 'n', }, { 'q', 'r', 'i', 't', } };

private static void findName(int row, int col, String direction) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter name.");

    String name = input.nextLine();

    StringBuilder word = new StringBuilder();
    int counter = 0;

    if ((col < 0) || (row < 0) || (col >= words[0].length) || (row >= words.length)) {
        // We are out of the labyrinth
        return;
    }

    if (words[row][col] != ' ') {
        // The current cell is not free
        return;
    } else {
        word = word.append(lab[row][col]);
    }

    // Check if we have found the exit

    if (word.equals(name)) {
        counter++;
        System.out.printf("Name - {%s} found %s times%n", name, counter);
        word = null;
    }

    // Mark the current cell as visited
    words[row][col] = 's';
    // Invoke recursion the explore all possible directions
    findName(row, col - 1, "L"); // left
    System.out.printf("L");
    findName(row - 1, col, "U"); // up
    System.out.printf("U");
    findName(row, col + 1, "R"); // right
    System.out.printf("R");
    findName(row + 1, col, "D"); // down
    System.out.printf("D");
    // Mark back the current cell as free
    words[row][col] = ' ';
}

public static void main(String[] args) {
    findName(0, 0, "R");
}

1 ответ

Ты говоришь

System.out.println("Enter name.");

int name = input.nextInt();

Я полагаю, вы хотите, чтобы имя было String не int,

Поэтому вы должны заменить его на

String name = input.nextLine();

Это также исправит ваш InputMismatchError, который, вероятно, возникает, когда вы позже попытаетесь сравнить word с name, Хотя вам, возможно, придется позвонить toString() на ваше StringBuilder word прежде чем вы сможете сравнить его с вашим String name,

Другие вопросы по тегам