Я работаю над текстовой игрой, один из ее методов - метод скремблирования, он должен взять String s, затем перетасовать его с помощью Collections.shuffle (ListOfSChars); и проверьте, находится ли скремблер в словаре SortedSet. если dictionary.contains (свалка) & & свалки! = S выход свалкаПоиск SortedSet <String>
Пример в моем коде является виноградом, он должен вывести любое возможное слово винограда, если 2 условия, -Первых, новое слово вскарабкался может» т виноград. wordsSet.contains (scramble) -Всегда новое скремблированное слово должно быть в словаре. карабкаться! = s
мой код выводит виноград не обращая внимания (если (wordsSet.contains (засекречивания) & & карабкаться! = S))
как я не возвращаться ту же строку?
Спасибо,
public class F
{
public static void main(String[] args)
{
String s = "grapes";
SortedSet<String> dictionary = new TreeSet<String>(EnglishWords);
List<Character> list = new ArrayList<Character>();
for (char c : s.toCharArray)
list.add(c);
Collections.shuffle(list);
String scramble = "";
StringBuilder sb1 = new StringBuilder();
for (char c : list)
sb1.append(c);
scramble = sb1.toString();
sb1.setLength(0);
boolean found = false;
while (found != true)
{
Collections.shuffle(list);
for (char c : list)
sb1.append(c);
scramble = sb1.toString();
sb1.setLength(0);
if (wordsSet.contains(scramble) && scramble != s)
{
found = true;
break;
} else if (!wordsSet.contains(scramble))
{
found = false;
}
}
System.out.println("scrambled word is " + scramble);
}
}
Никогда не сравнивайте (общие) объекты с помощью == (! =) - он вернет true только для одного и того же объекта. –
Не будет ли этот бесконечный цикл, если нет совпадений? –
Вы должны использовать перестановки на входной строке, а не случайную перетасовку. При перетасовке вы будете выполнять одну и ту же проверку несколько раз. –