有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何找出某个字符在字符串中的第一次、第二次或第三次出现?

如果我有一个像“telephone”这样的字符串,并希望输出返回为tel*phon*,我该怎么做

程序将打印出字符串中的每个字母。如果这是那封信第一次出现,我会写的。但如果它再次出现,我会打印一个星号

你好,我是Hell*o

再见就要走了

协调就是协调***(哦,你说得对)

请帮忙谢谢!这不是家庭作业。。。这是期末考试的练习!谢谢

我在尝试一些类似。。。但我不知道该怎么进一步。。。请帮忙

Scanner keyboard = new Scanner(System.in);
String s;
int i, j, count;
System.out.print("Enter string: ");
s = keyboard.nextLine();



for(i=0; i < s.length(); i++){
   count = 0;
   for(j=i+1; i < s.length(); j++){
        if(s.charAt(i) == s.charAt(j)){
           count++;
        }
        if(count < 1)
           System.out.print(s.charAt(i));
        else
           System.out.print("*");
   }
}

有些人让我发布代码,所以我现在发布了。我该如何编辑这个精确的代码才能使其工作?请帮忙:(


共 (2) 个答案

  1. # 1 楼答案

    这里有一个方便的方法Setadd()上有一个布尔属性,如果该值已经插入到集合中,则返回false

    方法:创建一个数据结构,这样您就可以保证只在其中插入唯一的值。如果在其中插入了唯一的值,则可以继续构建返回字符串。如果没有,则需要生成星号

    参考下面的代码。为了保证对大写和小写字符进行无偏处理,请在.toCharArray()之前调用toLowerCase()

    public static String filterChars(final String word) {
        final Set<Character> set = new HashSet<>();
    
        final StringBuilder builder = new StringBuilder();
        for(Character c : word.toCharArray()) {
            if(set.add(c)) {
                builder.append(c);
            } else {
                builder.append('*');
            }
        }
        return builder.toString();
    }
    
  2. # 2 楼答案

    Set<Character> seen = new HashSet<Character>();
    String result = "";
    for (char ch : input.toCharArray())
    {
        if (seen.contains(ch))
            result += "*";
        else
        {
            result += ch;
            seen.add(ch);
        }
    }
    

    input是输入字符串,result是输出字符串

    基本上,这会遍历输入字符串中的每个字符,并根据是否已经看到该字符,将适当的字符追加到结果字符串中