charAt错误"char无法转换为字符串"

Hug*_*ula 3 java compiler-errors

我试图使用以下代码,以便给定一个字符串,给出相同字符的最长连续子序列的长度.我收到错误"不兼容的类型:char无法转换为java.lang.String".我已经评论了下面找到错误的位置.

public class Test {
    public int longestRep(String str)
    {
        int currLen = 1;
        String currLet = "";
        String maxLet = "";
        int maxCount = 0;
        int currPos = 0;
        int strLen = str.length();
        for(currPos = 0; currPos < strLen; currPos++)
        {
            currLet = str.charAt(currPos); //error is on this line
            if(currLet = str.charAt(currPos+1))
            {
                currLen++;
            }
            else
            {
                if(currLen > maxLen)
                {
                    maxLen = currLen;
                    maxLet = currLet;
                    currLen = 1;
                }
            }
        }
    }
    public static void main(String args[])
    {
        longestRep("AaaaMmm");
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 7

String.charAt(int)返回一个字符.但是currLet类型String,所以你不能分配一个字符.请currLet = Character.toString(str.charAt(currPos));改用.


ajb*_*ajb 5

正如编译器所说,你不能将 a 转换char为 a String。如果你有 achar并且确实想将其转换为String长度为 1 的 a,则可以使用以下方法:

String s = String.valueOf(c);
Run Code Online (Sandbox Code Playgroud)

或者

String s = Character.toString(c);
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在使用的字符是通过 获得的charAt,则另一个解决方案是删除charAt并使用substring返回长度为 1 的字符串:

currLet = str.substring(currPos, currPos + 1);
Run Code Online (Sandbox Code Playgroud)


Mad*_*mer 2

  • currLet = str.charAt(currPos);String不能将值分配给 a ,char它们是不同的类型,苹果和橙子
  • if (currLet = str.charAt(currPos + 1)) {实际上是一个赋值(使currLet等于 的值str.charAt(currPos + 1)
  • if (currLen > maxLen) {-maxLen未定义
  • 你从来没有return从方法中得到任何东西......

尝试改变:

  • String currLet = "";更像是char currLet = '\0';String maxLet = "";char maxLet = '\0';
  • if (currLet = str.charAt(currPos + 1)) {类似的东西if (currLet == str.charAt(currPos + 1)) {
  • 添加int maxLen = 0到您的变量减法(可能在 下int maxCount = 0

现在,根据您的示例代码,您public int longestRep(String str) {需要public static int longestRep(String str) {从您的方法中调用main...