如果不包含字符串,如何只添加一些东西?

时间:2014-02-17 19:14:24

标签: java

我正在制作一个Lipogram程序,其中打印带有禁止字母的任何单词,但是,这些单词有时会被打印两次。如何让它不重复这些词?

这是我的代码:

public String allWordsWith(char letter) {

String str = "";
String word = "";

    s = s.replace(".", " ");
    s = s.replace(",", " ");
    s = s.replace("?", " ");
    s = s.replace("!", " ");
    s = " " + s + " ";

    for (int i = 0; i <= s.lastIndexOf(letter); i++) {
        if (s.charAt(i) == letter) {
            if (str.contains(s.substring(s.lastIndexOf(" ", i), s.lastIndexOf(" ", i) + 1) + '\n') == true) {

            } else {
                word += s.substring(s.lastIndexOf(" ", i), s.indexOf(" ", i)) + '\n';
                str += word;
            }
        }
    }

    return str;

}

1 个答案:

答案 0 :(得分:0)

重要说明:函数是否在字符串“hello hi hello howdy”中选择为“o”的字母运行,意味着返回“hello hello howdy”或“hello howdy”。即,如果单词出现两次,你想要打印两次,还是只想打印一次而不管重复?

如果只重复一次,那么您应该使用Set来存储数据。

但是,我认为你有可能会遇到一个问题,即在运行函数时,在同一个字符串上选择“l”作为“l”,“你好你好你好”,你得到一个输出“你好你好你好你好”。正确的吗?

这里的问题是你正在检查每个字母,而不是测试每个。要解决这个问题,我会使用:

String[] words = s.split(" ");

创建一个单词数组。使用以下命令测试该数组中的每个值以查看它是否包含给定的字母:

if(words[index].contains(letter)){
    str += " " + words[index];
}