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
,