Word Anagram

Здравейте, колеги някой може ли да ми поправи грешката в кода? Проблема е, че още преди да съм въвел 3-та входна данна ми принтира NO, иначе всичко друго работи. Koд: https://pastebin.com/Q2vmh9Ae
Условие: https://judge.telerikacademy.com/problem/03anagrams2

Здрастии,
В някой от контестите ли е задачката, понеже не мога да достъпя условието?

Здравей,

Проблемът идва от:

int n = scanner.nextInt();

Тъй като методът Scanner.nextInt(); не чете символа за нов ред чрез натискането на бутона Enter, този празен символ ( " " ) отива автоматично към следващия ти input, който е: String word2 = scanner.nextLine();

Затова имаш винаги едно предравително сравняване, което винаги показва “No”, защото сравнява първата дума с втората, която е празно разстояние.

Решението е да добавиш празен ред след scanner.nextInt(), който да “погълне” празния символ от натискането на Enter клавиша:

int n = scanner.nextInt();
scanner.nextLine();

По-добро решение, според мен, и като цяло добра практика, която можеш да ползваш за в бъдеще, е:

int n = Integer.parseInt(scanner.nextLine());

Така нямаш нужда от празен ред долу, защото потребителят реално въвежда String input (nextLine), който по правило поема символа за нов ред след натискане на Enter key, след което въведеното се парсва в int.

Аз лично така се научих винаги да си инициализирам int и по този начин си подсигурявам, че няма да имам проблеми с новите редове, ако след това случайно имам други Scanner inputs.

Успех!

П.С. Задачата е от Mock Exam - Variant 2.

Поздрави,
Петър

1 Like

Здрасти, задачката е от Mock Exams.

Благодаря много!