Java 以下字符串程序的输出不正确 公共类noofcons字母表{ 公共静态void main(字符串[]args){ String str=“aaabddaabbcc”; 整数计数=1; 字符串finalString=“”; 对于(int i=1;i

Java 以下字符串程序的输出不正确 公共类noofcons字母表{ 公共静态void main(字符串[]args){ String str=“aaabddaabbcc”; 整数计数=1; 字符串finalString=“”; 对于(int i=1;i,java,string,Java,String,这就是问题所在: 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.charA

这就是问题所在:

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);
    }
}

这是在执行一个
char
+
int
转换,这仅仅是一个整数运算,因为
+
是左关联的。当
”,“
与之连接时,生成的整数将转换为字符串

因此:

str.charAt(i)+count+","
相当于:

finalString+=str.charAt(i)+count+",";
我建议您使用:

int tmp1 = str.charAt(i)+count;
String tmp2 = tmp1 + ",";
finalString += tmp2;
强制字符串连接。更好的方法是使用
StringBuilder

String.valueOf(str.charAt(i)) + count
这更清楚、更有效:)

这就是问题所在:

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);
    }
}

这是在执行一个
char
+
int
转换,这仅仅是一个整数运算,因为
+
是左关联的。当
”,“
与之连接时,生成的整数将转换为字符串

因此:

str.charAt(i)+count+","
相当于:

finalString+=str.charAt(i)+count+",";
我建议您使用:

int tmp1 = str.charAt(i)+count;
String tmp2 = tmp1 + ",";
finalString += tmp2;
强制字符串连接。更好的方法是使用
StringBuilder

String.valueOf(str.charAt(i)) + count
这更清晰、更高效:)

您实际上添加了:

builder.append(str.charAt(i)).append(count).append(",");
由于
+
是左关联的,因此您最终会执行以下操作:

char + int + String
因此,
int+String
;只有在该步骤中才会发生字符串连接

解决方法是使用
String.format()

您基本上添加了:

builder.append(str.charAt(i)).append(count).append(",");
由于
+
是左关联的,因此您最终会执行以下操作:

char + int + String
因此,
int+String
;只有在该步骤中才会发生字符串连接

解决方法是使用
String.format()


char
int
上使用
+
运算符将导致一个
char
表示两者的总和(并且不连接)。有关详细说明和例外情况,请参阅答案

那么,声明呢

String.format("%c%d,", str.charAt(i), count);
最后是char+int加法,而不是字符串串联


要连接,请先将
str.charAt(i)+
转换为
字符串

对a
char
int
使用
+
运算符,得到表示两者之和的
char
。有关详细解释和例外情况,请参阅答案

那么,声明呢

String.format("%c%d,", str.charAt(i), count);
最后是char+int加法,而不是字符串串联


要连接,首先将
str.charAt(i)+
转换为
String

char
+
int
=>
int
char
+
int