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

时间:2015-03-26 03:31:48

标签: 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");
    }
}

4 个答案:

答案 0 :(得分:7)

String.charAt(int)返回一个字符。但currLet的类型为String,因此您无法指定字符。请改用currLet = Character.toString(str.charAt(currPos));

答案 1 :(得分:2)

  • currLet = str.charAt(currPos);无法将String值分配给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方法拨打电话...

答案 2 :(得分:2)

正如编译器所说,您无法将char转换为String。如果你有一个char并且你真的想将其转换为长度为1的String,那么这将有效:

String s = String.valueOf(c);

String s = Character.toString(c);

但是,如果您使用的字符是charAt获得的,则另一种解决方法是删除charAt并使用substring返回长度为1的字符串:< / p>

currLet = str.substring(currPos, currPos + 1);

答案 3 :(得分:2)

将Char转换为String

的简便方法

将空字符串添加到表达式的开头,因为将char和String结果添加到String中。

转换一个字符 "" + 'a'
转换多个字符 "" + 'a' + 'b'

转换多个字符有效,因为首先评估"" + 'a' 如果""位于最后,您将获得"195"

  

请记住,Java语言保证(Java Language Specification,Java SE 7 Edition,第15.12.4.2节)所有参数都是从左到右进行评估(与其他语言不同,评估顺序未定义)