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)
String.charAt(int)返回一个字符.但是currLet类型String,所以你不能分配一个字符.请currLet = Character.toString(str.charAt(currPos));改用.
正如编译器所说,你不能将 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)
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...
| 归档时间: |
|
| 查看次数: |
30326 次 |
| 最近记录: |