簡體   English   中英

charAt錯誤“char無法轉換為字符串”

[英]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的簡便方法

將空字符串添加到表達式的開頭,因為將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM