【问题标题】:Searching SortedSet<String>搜索 SortedSet<String>
【发布时间】:2014-01-18 22:24:39
【问题描述】:

我正在开发一个文字游戏,其中一种方法是打乱方法,它应该采用 String ,然后使用 Collections.shuffle(ListOfSChars);并检查 scramble 是否在 SortedSet Dictionary 中。 if dictionary.contains(scramble) && scramble != s output scramble

我的代码中的示例是葡萄,如果两个条件为真,它应该输出任何可能的葡萄词, -首先,新的炒字不能是葡萄。 wordsSet.contains(争夺) -第二,新的打乱词必须在字典中。争夺!= s

我的代码输出葡萄忽略 (if (wordsSet.contains(scramble) && scramble != 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。
  • 如果没有匹配项会不会无限循环?
  • 您应该在输入字符串上使用排列而不是随机洗牌。使用 shuffle,您将多次运行相同的检查。

标签: java string collections set


【解决方案1】:

试试

!scramble.equals(s)

而不是

scramble != s

前者是在 Java 中正确比较字符串的方式。

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多