java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数

参见英文答案 > 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 状态机Automatonymous快速入门

介绍 Automatonymous是.NET开发人员的状态机库。它提供了一种流畅的语法来声明状态机&#xff0c;包括状态&#xff0c;事件&#xff08;支持触发器和数据事件&#xff09;以及状态/事件活动。尽管Automatonymous在简单的状态机上非常容易使用&#xff0c;但它具有许多高级功能…

C++vector容器-预留空间

vector预留空间 功能描述&#xff1a; 减少vector在多态扩展容量时的扩展次数 函数原型&#xff1a; reserve(int len);//容器预留len个元素长度&#xff0c;预留位置不初始化&#xff0c;元素不可访问。 当我们往vector容器中push_back大量的数&#xff0c;vector就会开辟多…

BeetleX实现HTTP协议详解

在传统网络服务中扩展中需要处理Bytes来进行协议的读写&#xff0c;这种原始的处理方式让工作变得相当繁琐复杂&#xff0c;出错和调试的工作量都非常大&#xff1b;组件为了解决这一问题引用Stream读写方式&#xff0c;这种方式可以极大的简化网络协议读写的工作量&#xff0c…

erlang rebar 配置mysql_Erlang Rebar 使用指南之四:依赖管理

Erlang Rebar 使用指南之四&#xff1a;依赖管理全文目录&#xff1a;本章链接&#xff1a;1 rebar依赖定义Rebar取得和构建符合OTP/Rebar规范的项目。如果项目包含子项目&#xff0c;Rebar会自动递归地构建它们。项目的依赖在project_dir/rebar.config中定义&#xff0c;形式如…

euclidea4攻略_Euclidea几何构建11.4通关攻略

Euclidea几何构建10.2通关攻略Euclidea游戏10.2怎么过&#xff1f;下面小编为大家带来Euclidea几何构建10.2通关攻略&#xff1a;更多攻略不断更新中——Euclidea游戏全关卡通关攻略大全分两次做图第一次&#xff0c;画圆就成了&#xff0c;具体看图应该能懂。第二次&#xff0…

C++set容器-构造和赋值

set基本概念 简介&#xff1a; 所有元素都会自动在插入时自动被排序&#xff0c;set容器也叫集合容器 本质&#xff1a; set/multiset属于关联式容器&#xff0c;底层结构是用二叉树排序 set和multiset区别&#xff1a; 1.set不允许容器中有重复的元素 2.multiset允许容器中有…

(1)解锁MongoDB replica set核心姿势

本文倒腾目前大热的MongoDB Replica Set集群&#xff0c;在倒腾的同时串讲一些 MongoDB特性。 副本集Replica Set是一个术语&#xff0c;定义具有多节点的数据库集群&#xff0c;这些节点具有主从复制(master-slave replication) 且节点之间实现了自动故障转移。 这样的结构通常…

java写dnf外掛_dnf卡盟_Java的泛型详解(一)

Java实现DDD中UnitOfWorkdnf卡盟Java的泛型详解泛型的利益编写的代码可以被差别类型的工具所重用。由于上面的一个优点&#xff0c;泛型也可以削减代码的编写。泛型的使用简朴泛型类public class Pair {private T first;private T second;public Pair() {first null;second n…

C++set容器-大小和交换

set大小和交换 功能描述&#xff1a; 统计set容器大小以及交换set容器 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <set> //set容器 大小和容器void printSet(set<int > &s) {for (set<int …

Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手

概述ScheduleMaster是一个开源的分布式任务调度系统&#xff0c;它基于Asp.Net Core平台构建&#xff0c;支持跨平台多节点部署运行。它的项目主页在这里&#xff1a;https://github.com/hey-hoho/ScheduleMasterCore关于它的简单介绍可以看这里&#xff1a;https://www.cnblog…

PHP数组加表格_php数组输出html表格的操作方法

class xtable{?private $tit,$arr,$fons,$sextra;?public function __construct()?{??$this->titarray();???????// strings with titles for first row??$this->arrarray();???????// data to show on cells??$this->fonsarray("#EEEEEE…

C++set容器-插入和删除

set插入和删除 功能描述&#xff1a; set容器进行插入数据和删除数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <set>void printSet(set<int > &s) {for (set<int >::iterator it s.be…

基于Jenkins的持续交付全流程设计与实践

1 从理论开始什么是DevOps?近年来&#xff0c;随着DevOps理念的逐渐深入人心&#xff0c;企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理&#xff0c;对于提高企业劳动生产力已经非常重要&#xff0c;尤其是面向互联网的开发者&#xff0c;往往每次上线时&#xff0…

C++set容器-查找和统计

set查找和统计 功能描述&#xff1a; 对set容器进行查找数据以及统计数据 函数原型&#xff1a; 代码如下: #include <iostream> using namespace std; #include <set>//set查找和统计void test01() {//查找set<int >s1;//插入数据s1.insert(10);s1.inse…

Beetlex之redis驱动

BeetleX.RedisBeetleX.Redis是基于BeetleX扩展的Redis操作库&#xff0c;全异步操作模式和基于字符缓存策略优化可以提供出色的Redis访问性能&#xff1b;支持SSL&#xff0c;支持读写分离和故障切换&#xff1b;默认多数据格式支持&#xff0c;默认提供json,protobuf和message…

php 后门代码_分析一段PHP的后门代码,很恶心

[PHP] 纯文本查看 复制代码if($_GET[ac]"ok"){ echo OK;function downFile($url,$path){$arrparse_url($url);$fileNamebasename($arr[path]);$filefile_get_contents($url);}downFile("这里是网络下载地址&#xff0c;防止小人&#xff0c;直接删除这里的连接&…

C++set和multiset区别

区别&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <set>//set容器 和multiset容器的区别 void test01() {set<int >s;pair<set<int >::iterator, bool> ret s.insert(10);if (ret.second) {cout &…

.NET CORE(C#) WPF简单菜单MVVM绑定

阅读导航 本文背景 代码实现 本文参考 源码 1. 本文背景 WPF中垂直导航菜单大家应该都常用&#xff0c;本文介绍使用MVVM的方式怎么绑定菜单&#xff0c;真的很简单。 2. 代码实现 使用 .Net Core 3.1 创建名为 “MenuMVVM” 的WPF模板项目&#xff0c;添加两个Nuget库&…

安装安全狗后php5.5无法访问,安装安全狗模块(WPCPlugin.dll和ntdll.dll)引起的网站程序池停止的问题...

服务器windows server2008r2&#xff0c;环境IIS7.5PHP5.3&#xff0c;自从安装网站安全狗以后偶尔会发生某个网站的程序池异常停止&#xff0c;刚开始也没在意&#xff0c;后来越发频繁&#xff0c;只好细心的去寻找问题。在系统日志里发现了一些信息&#xff0c;首先有警告&a…

C++pair对组的创建

pair对组创建 功能描述&#xff1a; 成对出现的数据&#xff0c;利用对组可以返回两个数据 两种创建方式&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>void test01() {//第一种方式pair<string, int>…