0

これは、リソースからの 2 つの配列を 1 つの配列にバインドすると考えました。

Resource res=getResources();

final int[] one_array=res.getIntArray(R.array.first_array) + res.getIntArray(R.array.second_array);

ただし、次のように変数配列を宣言することはできません。

The operator + is undefined for the argument type(s) int[], int[]

また、リソースから 2 つの配列 + 1 つの配列を 1 つの配列にバインドしたいと考えています。私の考えでは、次のようにする必要があります。

Resource res=getResource();

final int[] one_array={ 1,2,3,4,5,res.getIntArray(R.array.first_array),res.getIntArray(R.array.second_array) };

ただし、次のように変数配列を宣言することはできません。

Multiple markers at this line
    - Type mismatch: cannot convert from 
     int[] to int

リソースと通常の配列から2つの配列をバインドして、1つの配列を宣言するにはどうすればよいですか? 配列をバインドするための別の/代替方法/解決策はありますか?

4

3 に答える 3

4

ArrayUtils.addAll を試す

final int[] one_array = ArrayUtils.addAll(res.getIntArray(R.array.first_array), res.getIntArray(R.array.second_array);

+演算子は 2 つの文字列を連結します。

于 2013-08-30T04:04:36.233 に答える
0

または、この操作だけに jar 全体を含めたくない場合は、addAll()ソース コードに基づいて独自のヘルパー メソッドを定義します。最終的にはSystem.arrayCopy()、両方の配列を 1 つの大きな配列にするだけです。

/**
 * <p>Adds all the elements of the given arrays into a new array.</p>
 * <p>The new array contains all of the element of <code>array1</code> followed
 * by all of the elements <code>array2</code>. When an array is returned, it is always
 * a new array.</p>
 *
 * <pre>
 * ArrayUtils.addAll(array1, null)   = cloned copy of array1
 * ArrayUtils.addAll(null, array2)   = cloned copy of array2
 * ArrayUtils.addAll([], [])         = []
 * </pre>
 *
 * @param array1  the first array whose elements are added to the new array.
 * @param array2  the second array whose elements are added to the new array.
 * @return The new int[] array.
 * @since 2.1
 */
public static int[] addAll(int[] array1, int[] array2) {
    if (array1 == null) {
        return clone(array2);
    } else if (array2 == null) {
        return clone(array1);
    }
    int[] joinedArray = new int[array1.length + array2.length];
    System.arraycopy(array1, 0, joinedArray, 0, array1.length);
    System.arraycopy(array2, 0, joinedArray, array1.length, array2.length);
    return joinedArray;
}

ソース(Apache 2.0 ライセンス)。

于 2013-08-30T04:27:11.843 に答える
0


デフォルトのjdkを使用してコードの下で配列の使用をバインドする場合、デフォルトのjdkはArrayUtilsクラスを使用しないでください。

    int a[] = new int[11];
    int b[] = new int[21];
    int c[] = new int[a.length + b.length];

    System.arraycopy(a, 0, c, 0, a.length);
    System.arraycopy(b, 0, c, a.length, b.length);
于 2013-08-30T04:38:21.293 に答える