![](/img/trans.png)
[英]error: incompatible types: char cannot be converted to char[] charValue = Input.charAt(0);
[英]charAt error “char cannot be converted to string”
我試圖使用以下代碼,以便給定一個字符串,給出相同字符的最長連續子序列的長度。 我收到錯誤“不兼容的類型: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");
}
}
String.charAt(int)
返回一個字符。 但currLet
的類型為String
,因此您無法分配字符。 使用currLet = Character.toString(str.charAt(currPos));
代替。
currLet = str.charAt(currPos);
String
值不能分配給char
,它們是不同的類型,蘋果和橙子 if (currLet = str.charAt(currPos + 1)) {
實際上是一個賦值(make currLet
等於str.charAt(currPos + 1)
) if (currLen > maxLen) {
- maxLen
未定義 return
任何東西...... 嘗試改變:
String currLet = "";
更像char currLet = '\\0';
和String maxLet = "";
to char maxLet = '\\0';
if (currLet = str.charAt(currPos + 1)) {
if (currLet == str.charAt(currPos + 1)) {
int maxLen = 0
添加到變量int maxCount = 0
(可能在int maxCount = 0
) 現在,基於你的示例代碼, public int longestRep(String str) {
將需要是public static int longestRep(String str) {
為了讓你從你的main
方法調用...
正如編譯器所說,你不能將char
轉換為String
。 如果你有一個char
並且你真的想將它轉換為長度為1的String
,那么這將有效:
String s = String.valueOf(c);
要么
String s = Character.toString(c);
但是,如果您正在使用的字符是由charAt
獲得的,另一種解決方案是刪除charAt
並使用substring
返回長度為1的字符串:
currLet = str.substring(currPos, currPos + 1);
將空字符串添加到表達式的開頭,因為將char和String結果添加到String中。
轉換一個字符 "" + 'a'
轉換多個字符 "" + 'a' + 'b'
轉換多個字符的工作原理是因為首先評估"" + 'a'
。
如果""
在最后,你會得到"195"
請記住,Java語言保證( Java語言規范 ,Java SE 7版,第15.12.4.2節)所有參數都是從左到右進行評估(與其他語言不同,評估順序未定義)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.