2

変数の最初のケースを配列に格納することに取り組んでいます。変数がいくつあるかわからないため、配列リストを使用することにしました。

コンパイル時に次のエラーが発生します。

javac TruthTester.java
TruthTester.java:102: error: no suitable method found for toArray(char[])
char[] charArr = letters.toArray(x);
^
method ArrayList.<T>toArray(T[]) is not applicable
(inferred type does not conform to declared bound(s)
inferred: char bound(s): Object)
method ArrayList.toArray() is not applicable
(actual and formal argument lists differ in length)
where T is a type-variable:
T extends Object declared in method <T>toArray(T[])
1 error

ここに私のコードのセグメントがあります..

private static char[] getVariables(String[] lines)
{
    ArrayList<Character> letters = new ArrayList<Character>();

    int count = 0;
    for(int x = 0; x < lines.length; x++)
    {
        for(int i = 0; i < lines[x].length(); i++)
        {
            char tempStore = 'a';
            boolean isCopy = false;
            int counter = 0;
            for(char letter : letters)
            {
                if(isAlphabeticToken(letter)){
                    if(lines[x].charAt(counter) == letter)
                    {
                        isCopy = true;
                    }
                    else
                    {
                        isCopy = false;
                        tempStore = letter;
                    }
                }
                else
                {
                    isCopy = true;
                }
                counter++;
            }
            if(!isCopy)
            {
                letters.add(tempStore);
                count++;
            }
        }
    }
            /*
             * ==========
             * ERROR HERE
             * ==========
             */
    char[] x = new char[letters.size()];
    char[] charArr = letters.toArray(x);

    return charArr;
}
4

2 に答える 2

2

ArrayList は Character 型なので、Character[] に変換できますが、char[] には変換できません。

したがって、次のようなことができます:
Character[] x = new Character[letters.size()];
Character[] charArr = letters.toArray(x);

また

stringbuilder を使用するとうまくいきます:

StringBuilder sb = new StringBuilder(letters.size());
for (Character c : letters)
    sb.append(c);
String result = sb.toString();
return result.toCharArray();
于 2013-02-04T22:38:51.040 に答える
2

char[]から を取得することはできません。取得できるArrayList<Character>のは のみCharacter[]です。

StringBuilder代わりに使用することを検討しましたか? これは実際には、可変で長さが不明な文字グループを保持するために特別に設計されています。

于 2013-02-04T22:31:36.307 に答える