参见英文答案 > Java compressing Strings                                    18个

我正在尝试编写一个Java程序,它接受一个字符串作为输入,并计算一个字符串中出现的字符数,然后打印一个新字符串,该字符串后跟no出现的字符.

例如.

输入字符串:

aaaabb

输出字符串:

a4b2

输入字符串:

aaaaabbbc

输出字符串:

a5b3c1

我发布了我的java代码.

它正在抛出StringOutOfBoundException

/*Write a routine that takes as input a string such as "aabbccdef" and o/p "a2b2c2def" or "a4bd2g4" for "aaaabddgggg".*/

import java.util.Scanner;

public class CountingOccurences {

public static void main(String[] args) {

Scanner inp= new Scanner(System.in);

String str;

char ch;

int count=0;

System.out.println("Enter the string:");

str=inp.nextLine();

while(str.length()>0)

{

ch=str.charAt(0);

int i=0;

while(str.charAt(i)==ch)

{

count =count+i;

i++;

}

str.substring(count);

System.out.println(ch);

System.out.println(count);

}

}

}

解决方法:

这就是问题:

while(str.charAt(i)==ch)

这将继续下去直到它结束…当我与字符串的长度相同时,它将要求超出字符串末尾的字符.你可能想要:

while (i < str.length() && str.charAt(i) == ch)

您还需要在较大循环的每次迭代开始时将计数设置为0 – 计数重置,毕竟 – 并更改

count = count + i;

要么:

count++;

…或摆脱伯爵或我.毕竟,他们总是会有相同的价值.就个人而言,我只使用一个变量,在循环中声明并初始化.事实上,这是一个通用的样式点 – 在需要时声明局部变量更为清晰,而不是在方法的顶部声明它们.

但是,那么你的程序将永远循环,因为这没有做任何有用的事情:

str.substring(count);

字符串在Java中是不可变的 – substring返回一个新字符串.我想你想要:

str = str.substring(count);

请注意,这仍然会为“aabbaa”输出“a2b2a2”.这样可以吗?

标签:string-parsing,java,string,exception

来源: https://codeday.me/bug/20191002/1843137.html

java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数相关推荐

  1. java将从键盘输入的时间格式化_java 时间格式化中的模式字母

    java日期格式化中的模式字母有特定的意义,由于没有注意,今天在做工程的时候导致出现了奇怪的日期: 错误写法如下: 然而得到了错误的结果: 正确写法如下: 这样就得到了正确的结果 mm指的是分钟,MM ...

  2. Java获取单词的首字母的方法_java – 从句子中的每个单词中提取第一个字母

    我已经开发了一个语音到文本程序,用户可以说一个简短的句子,然后将其插入文本框. 如何提取每个单词的首字母然后将其插入文本字段? 例如,如果用户说:"Hello World".我想在 ...

  3. java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务

    java中两任务并行运行 当我们用Java编写多线程应用程序时,我们倾向于使用" Runnable "接口来实现线程类. 您的类必须简单地实现此接口并覆盖run方法. 对于琐碎的用 ...

  4. java string出现次数_Java String方法获取字符出现次数及字符最大相同部分示例

    本文实例讲述了Java String方法获取字符出现次数及字符最大相同部分.分享给大家供大家参考,具体如下: package demo; public class Test { public stat ...

  5. java获取页面点击次数_java计算鼠标点击次数的题,急求!

    展开全部 我没有用到题目里给的计算时间差来计算,想不明白有啥用. 另外我就没布局了,随便做了个界面美化32313133353236313431303231363533e58685e5aeb931333 ...

  6. java语言使用的字符码集是_Java应用开发中的字符集与字符编码

    事出有因 在向HttpURLConnection的输出流写入内容时,因没有设置charset,导致接收方对数据的验签不一致. URL url = newURL(requestUrl);//打开连接 H ...

  7. java中微秒时间相减_Java计算时间差(两个时间相减)

    在Android开发或者Java学习中,经常要求两个时间差 比如说: 现在是 :2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式 ...

  8. java中斜杠的用法_java培训学习中反斜杠“\”的用法

    java反斜杠\的用法比较怪异,分为两种场景: 1. 正则表达式 匹配点(.) 或 {.[.(.?.$.^ .+和 * 这些特殊符号要要前加双斜框,表示字符类的时候也是用双斜杠譬如(\\s[空白符], ...

  9. java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入

    Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的 Java对Oracle中Clob数据类型是不能够直接插入的, ...

最新文章

  1. 剑指offer:面试题18. 删除链表的节点
  2. 聊一聊转行推荐的问题
  3. ios开发 静音键设置_合肥包河区:连夜设置三道拦水坝只为按下中考“静音键”...
  4. mysql 回滚之后抛出异常_在PHP中 开始事务后,程序抛出异常 没有执行commit也没有执行rollback mysql事务会回滚吗?...
  5. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  6. NEUACM 2015年一月月赛
  7. Linux acpi off学习的必要
  8. Remoting在FX2.0中的新特性 (2)
  9. 信息论实验一:信源熵的计算
  10. ActiveReport报表模板库新增21张报表模板,加入报表导出功能!
  11. 医疗物联网的定义的业务场景
  12. Spotfire 表达式中的属性
  13. serialVersionUID 问题处理
  14. mac打开chm格式文件
  15. SSM网上校园订餐系统-javaweb, mysql
  16. Selenium3自动化学习(三)
  17. 计算机架构总结笔记(1)
  18. TIMESAT 无格式文件迭代转tif
  19. 清亡之路(4):最受误解的东南互保
  20. 先别急着练速写,人物慢写才是第一步

热门文章

  1. Android之倍数提高工作效率的 Android Studio 奇技
  2. C++ 语法都不会怎么写代码? 03
  3. Python3 实现建造者模式
  4. 基于junit4的关于个人所得税计算的等价类与边界值_《边界值分析》-有这篇就够了...
  5. oracle中persons,oracle 简单备注
  6. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...
  7. 自定义sql_一个简单易用的开源BI软件,专为SQL用户设计的开源库
  8. eltree ref什么时候有_Vue3响应式系统源码解析-Ref篇
  9. 现在的娃娃有多智能?
  10. 限时秒杀┃月销10000+件,风靡全国的steam科学实验套装