java - 在字符串中查找唯一字符?逻辑上有什么问题。我找不到错误
问题描述
我正在尝试查找字符串中仅出现一次的字符,其中字符串仅包含字母。
这是我的代码:
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
.
我究竟做错了什么?
解决方案
检查第 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));
}
}
没有它,它将存储先前检查的字符的计数值,因此不会从零开始(这是我们检查每个字符的频率所必须做的)。
推荐阅读
- java - 自动删除旋转的 gc.log 文件
- database - 如何通过原始数据文件(即没有 API 或连接器)访问 hsql 数据库?
- python - 使用 __contains__ 对 numpy 数组进行非常慢的迭代
- android-studio - Android studio 3.1.2 不支持 ndk-build
- sql-server - 从节点js调用存储过程
- javascript - 视频背景插件 - 静音视频 - Wordpress
- java - 更改 JSON 数组对象的顺序
- c++ - 构建错误:“找不到文件的目标”和“未定义的引用”
- javascript - 为什么分页不起作用?
- javascript - 将 svg 转换为 png 时删除默认空间