public class NoOfConsAlphabet {
public static void main(String[] args) {
String str="aaabbddaabbcc";
int count=1;
String finalString="";
for(int i=1;i<str.length()-1;i++)
{
if(str.charAt(i)==str.charAt(i+1))
{
++count;
}
else
{
finalString+=str.charAt(i)+count+",";
count=1;
}
}
System.out.println(finalString);
}
}
我得到这个作为我的o / p:99,100,102,99,100,有人可以告诉我如何解决这个问题不确定这是什么?需要得到a3,b2,d2,a2,b2的输出,
答案 0 :(得分:3)
你基本上添加:
char + int + String
由于+
是关联的,你最终会这样做:
(char + int) + String
因此int + String
;并且只有在那一步才发生字符串连接。
解决方案是使用String.format()
:
String.format("%c%d,", str.charAt(i), count);
答案 1 :(得分:2)
这是问题所在:
str.charAt(i)+count+","
正在执行char
+ int
转换,这只是整数运算,因为+
是左关联的。当","
与其连接时,生成的整数然后转换为字符串。
所以这个:
finalString+=str.charAt(i)+count+",";
相当于:
int tmp1 = str.charAt(i)+count;
String tmp2 = tmp1 + ",";
finalString += tmp2;
我建议您使用:
String.valueOf(str.charAt(i)) + count
强制字符串连接。更好的是,使用StringBuilder
:
builder.append(str.charAt(i)).append(count).append(",");
更明确的和更有效:)
答案 2 :(得分:0)
在+
和char
上使用int
运算符会导致char
表示两者的总和(并且不会连接)。有关详细说明和例外情况,请参阅this答案。
所以,声明
finalString+=str.charAt(i)+count+",";
结束为char + int加法而不是字符串连接。
要连接,请先将str.charAt(i)+
转换为String
。