0

好的,我是 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……我一头雾水。

4

4 回答 4

0

你需要的是为你的问题建立逻辑。首先打破问题陈述并开始寻找解决方案。在这里,你去的步骤,

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

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

于 2013-10-06T03:58:10.453 回答
0

只是一个提示:使用哈希映射(http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html)。

于 2013-10-06T03:58:46.377 回答
0

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

    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);

此代码循环遍历第一个单词的所有字符,并检查第二个字符串是否包含该字符(在任何形式的大小写中)。如果它不包含,则将其添加到输出字符串并在最后打印它。

希望这将适用于您的情况。

于 2013-10-06T04:16:48.193 回答
0

仅在 1 行中执行此操作怎么样?

str = str.replaceAll("(.)(?=.*\\1)", "");
于 2013-10-06T04:56:45.947 回答