1. ホーム
  2. java

[解決済み] charAtエラー "char cannot be converted to string".

2022-03-17 01:19:42

質問

以下のコードを使用して、文字列が与えられたときに、同じ文字の連続する最長の部分列の長さを与えようとしています。エラー "互換性のない型: char cannot be converted to 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");
    }
}

解決方法は?

  • currLet = str.charAt(currPos); A 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 = ""; から 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 メソッドで...