2014-01-18 2 views
0

Я работаю над текстовой игрой, один из ее методов - метод скремблирования, он должен взять 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); 
    } 

} 
+0

Никогда не сравнивайте (общие) объекты с помощью == (! =) - он вернет true только для одного и того же объекта. –

+0

Не будет ли этот бесконечный цикл, если нет совпадений? –

+0

Вы должны использовать перестановки на входной строке, а не случайную перетасовку. При перетасовке вы будете выполнять одну и ту же проверку несколько раз. –

ответ

4

Try

!scramble.equals(s) 

вместо

scramble != s 

Первое, как вы правильно сравнивать строки в Java.

+0

Большое вам спасибо, это сработало просто отлично – Smartian

Смежные вопросы