首页 > 解决方案 > 在字符串中查找唯一字符?逻辑上有什么问题。我找不到错误

问题描述

我正在尝试查找字符串中仅出现一次的字符,其中字符串仅包含字母。

这是我的代码:

public static void main(String[] args)
{
    int count=0;
    Scanner sc= new Scanner(System.in);
    System.out.println("Enter the string: ");
    String s=sc.nextLine();
    char ch1=s.charAt(0);
    if(s.matches("[A-Za-z]+"))
    {
        for(int i=0;i<s.length();i++)
        {
            System.out.println(s.length());
            System.out.println(ch1);
            for(int j=1;i<s.length();j++)
            {
                if(s.charAt(i)==s.charAt(j))
                {
                    count++;
                }               
            }
            if(count == 1)
            {
                System.out.println(s.charAt(i));
            }
                
        }
    }
    else
        System.out.println("Invalid");  
}

我得到一个StringIndexOutOfBoundsException.

我究竟做错了什么?

标签: java

解决方案


检查第 s[i] 个字符后,您忘记在外循环中将计数变量设置回 0。

for(int i = 0; i < s.length(); i++)
{
    System.out.println(s.length());
    System.out.println(ch1);

    count = 0; //missing line

    for(int j = 1; j < s.length(); j++)
    {
        if(s.charAt(i) == s.charAt(j))
        {
            count++;
        }               
    }
    if(count == 1)
    {
        System.out.println(s.charAt(i));
    }
        
}

没有它,它将存储先前检查的字符的计数值,因此不会从零开始(这是我们检查每个字符的频率所必须做的)。


推荐阅读