Здравейте,колеги!Бихте ли помогнали със следната задача,тъй като ми изкарва 40/100 и не мога да разбера къде ме спъва решението.Ето го и него:https://pastebin.com/2RSrnH6x
Благодаря предварително!
Здравей,
когато дължините на началната и текущата дума са еднакви, защо проверяваш само 1 елемент от тях дали съвпада?
Би трябвало да провериш всичките, защото този един по случайност може да си е на мястото
if (inputarr.length == word.length) {
if (inputarr[i] == word[i]) {
System.out.println(“Yes”);
}
Пробвай с примерен вход, който трябва да изкара 3 х “No”, за да видиш какво става:
abcd
3
abbb
bbbb
aaca
пс. това сортиране можеш да го изкараш извън цикъла, защото тази дума си е една и съща и няма смисъл да ти я сортира N пъти: Arrays.sort(inputarr);
Успех
Благодаря ти!Оправих се с Arrays.equals и ги сравних!
Здравейте, имам малко странен въпрос за тази задача, но загубих много време, а не мога да разбера какво точно се случва - в Системата ми я приема за вярна, дава ми 100 точки, но когато тествам в IntelliJ Аутпутът ми не излиза както трябва: първите 5 отговора излизат веднага щом пейстна инпута, без да съм сложила enter, а последният излиза само ако после натисна enter, не знам дали грешката е в мен, ако и други са срещнали същия проблем, моля да споделят
Това е кодът ми:
import java.util.Arrays;
import java.util.Scanner;
import java.util.ArrayList;
public class WordAnagrams {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word = sc.nextLine();
char[] wordChar = word.toLowerCase().toCharArray();
Arrays.sort(wordChar);
// word =word.replaceAll("\s", “”);
int wordsNumber = Integer.parseInt(sc.nextLine());
boolean[] answer = new boolean[wordsNumber];
for (int i = 1; i <= wordsNumber; i++) {
String currentWord = sc.nextLine();
// answer = new boolean[i];
if (word.length() == currentWord.length()) {
char[] currentWordChar = currentWord.toLowerCase().toCharArray();
Arrays.sort(currentWordChar);
if (Arrays.equals(wordChar, currentWordChar)) {
//answer[i] = true;
System.out.println("Yes");
} else {
// answer[i] = false;
System.out.println("No");
}
} else {
// answer[i] = false;
System.out.println("No");
}
}
}
}
Това получавм когато пейстна инпута
когато натисна enter излиза и последният отговор
Дебъгвах много пъти и интересното е, че там всичко изглежда съвсем в реда на нещата
Здравей,
пробвай да не пействаш input-а, а да го пишеш ред по ред (може и да дебъгнеш), и ще си отговориш
Като пействаш няколко реда за input наведнъж, резултатът изглежда малко по-объркано. Реално дори да не натиснеш enter, а какъвто и да е др.input пак ще се отпечата последният ред (който ще отговаря за последната дума от input-а) >>>
Реално ти обработваш всяка дума веднага след input-а й (и съответно печаташ Yes/No) и след това повтаряш това за следващата - това ще е ясно видимо като Input-ваш ред по ред:)
Другият вариант, при който output-ът сигурно ще ти изглежда по-добре, е ако запишеш думите, които следва да бъдат обработени, в един списък или масив и ги пуснеш в цикъл една по една и на всяка отпечатваш резултата Yes/No (както колегата от горния коментар го е правил) - тогава ще ти изглежда по-добре:)
Много благодаря за отговора!