Java 如何删除字符串中的重复字符?

Java 如何删除字符串中的重复字符?,java,if-statement,merge,switch-statement,Java,If Statement,Merge,Switch Statement,好吧,我是java世界的一个新手,我似乎不能正确地使用这个程序。我想删除2字字符串中的重复字符,并打印非重复字符。 例如:我输入单词“计算机程序”。输出应该是“可爱的”,因为这些是唯一不重复的字符 我一直到这里: public static void main(String[] args) { System.out.print("Input two words: "); String str1 = Keyboard.readString(); String words[

好吧,我是java世界的一个新手,我似乎不能正确地使用这个程序。我想删除2字字符串中的重复字符,并打印非重复字符。 例如:我输入单词“计算机程序”。输出应该是“可爱的”,因为这些是唯一不重复的字符

我一直到这里:

public static void main(String[] args) {
    System.out.print("Input two words: "); 
    String str1 = Keyboard.readString();
    String words[] = str1.split(" "); 
    String str2 = words[0] + "  "; 
    String str3 = words[words.length - 1] ;
}
但我不知道如何输出字符。有人能帮我吗?
我不知道我是否应该使用if、switch、for、do或do while。。。。。。我很困惑。

你需要的是为你的问题建立逻辑。首先打破问题陈述,开始寻找解决方案。给你台阶

  • 读取字符串中的每个字符
  • 将它添加到集合中,但在添加之前,只需检查它是否存在
  • 如果它存在,只需将其移除并继续读取Characterteer
  • 读取完字符后,只需使用System.out.println将集合的内容打印到控制台

  • 我建议你参考像“像程序员一样思考”这样的书。这将帮助您开始逻辑构建。

    只是一个提示:使用哈希映射()。

    在主程序的最后一行之后添加以下代码将解决您的问题

        char[] strChars = str2.toCharArray();
        String newStr="";
        for (char c : strChars) {
            String charStr = ""+c;
            if(!str3.contains(charStr.toLowerCase()) && !str3.contains(charStr.toUpperCase())){
                newStr+=c;
            }
        }
    
        System.out.println(newStr);
    
    该代码循环遍历第一个单词的所有字符,并检查第二个字符串是否包含该字符(以任何形式的大小写)。如果它不包含,则将其添加到输出字符串,并在最后打印它


    希望这能在你的情况下起作用。

    用一行就可以了吗

    str = str.replaceAll("(.)(?=.*\\1)", "");
    

    输出不应该是“可爱的ga”吗?请考虑使用。通过一次字符串将字符映射到其计数。然后迭代映射的条目,并将频率为1的字符附加到某个缓冲区(即
    StringBuilder
    )。最后,打印结果。谢谢。当我看到你的结果时,我正在修改程序。我对if语句有问题。这就完成了计划。非常好。请您选择合适的帖子并将其标记为答案。