Java 程序查找连续的字母表并将其打印出来
公共类Noofcons字母表{Java 程序查找连续的字母表并将其打印出来,java,Java,公共类Noofcons字母表{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="aaabbddaabbcc"; int count=1; String finalString=""; for(int i=1;i<str.length()-1;i++) {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
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);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="aaabbddaabbcc";
String[] splitString=str.split("");
int count=1;
String finalString="";
for(int i=1;i<str.length()-1;i++)
{
if(splitString[i].equals(splitString[i+1]))
{
++count;
}
else
{
finalString+=splitString[i]+count+",";
count=1;
}
}
System.out.println(finalString);
}
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
String str=“aaabddaabbcc”;
整数计数=1;
字符串finalString=“”;
对于(inti=1;i用户3296744似乎正在使用的算法是
这里的问题不仅仅是实际输出:
"o/p:a1b3d2a2b2c2"
与所需的输出不匹配:
"o/p:3a, 2b, 2d, 2a, 2b, 2c"
但仔细检查后,实际输出的计数相对于随附字母偏移了1;也就是说,如果3应与a
匹配,则与b
匹配,依此类推
如果您在调试模式下运行代码,且代码行后有一个断点:
String[] str2=str.split("");
您会注意到str2
数组并不是您所期望的那样。它不是一个包含13个元素的数组,而是一个包含14个元素的数组,第一个元素是null
因此,我建议您避免使用split()
函数,可以使用charAt()函数,而不是将字符串拆分为数组
函数访问所需字符。注意:这可能需要您将for循环修改为标准版本,而不是for each version。我相信这可以做得更短、更甜,但
public class Main {
public static void main(String[] args) {
findAndPrintConsecutiveCharacters("aaabbddaabbcc");
}
private static void findAndPrintConsecutiveCharacters(String sToPrint){
for(int i = 0; i < sToPrint.length(); i ++){
char c = sToPrint.charAt(i);
int occurences = 1;
if(i <= sToPrint.length() - 2) { //limit the nested for so we dont go out of bounds
for (int i2 = i + 1; i2 < sToPrint.length(); i2 ++){
char c2 = sToPrint.charAt(i2);
if(c2 == c)
occurences += 1;
else{
i += occurences - 1; //shift i by the amount of occurences, this will prevent counting consecutive chars multiple times
break;
}
}
}
else
break; //we are on our last char
System.out.println(String.valueOf(occurences) + String.valueOf(c));
}
}
}
我建议您使用更好的命名约定和已定义的结构,如String.charAt(),而不是使用空正则表达式进行拆分。如果您使用它,您所拥有的可能会起作用,但如果您重新指定“指针”,则读起来会非常混乱正如您所命名的。什么是连续字母表?根据预期的输出,您需要做的只是检查charAt(i)==charAt(i+1)
?在调试器中运行它时会发生什么?连接到最后一个字符串时,我会得到字符的ascii码,但没有计数:
3a
2b
2d
2a
2b
2c