8

私は子供向けの数学ゲームである最初のAndroidアプリに取り組んでおり、その過程でJavaを学んでいます。私は2つArrayListのsを持っています。1つは整数0..9で、もう1つは可能な操作の文字列です。現在はちょうど+-です。

ランダムなインデックスをに返すメソッドを作成したいArrayListので、ランダムな要素を選択できます。私が遭遇しているArrayListのは、コードが同一であっても、タイプごとに1つずつ、合計2つのメソッドが必要なことです。単一の方法でこれを行う方法はありますか?

私が今使っているもの:

Random randomGenerator = new Random();

  . . .

n = randomIndexInt(possibleOperands);
int op1 = possibleOperands.get(n);
n = randomIndexInt(possibleOperands);
int op2 = possibleOperands.get(n);
n = randomIndexStr(possibleOperations);
String operation = possibleOperations.get(n);

    . . .

int randomIndexInt(ArrayList<Integer> a){
    int n = randomGenerator.nextInt(a.size());
    return n;
}

int randomIndexStr(ArrayList<String> a){
    int n = randomGenerator.nextInt(a.size());
    return n;
}

私がやりたいのは、崩壊randomIndexIntrandomIndexStrて単一の方法にすることです。

4

7 に答える 7

18

メソッドを次のように宣言します int randomIndexInt(ArrayList<?> a)

于 2012-07-31T07:20:35.190 に答える
7

必要なのは配列のサイズだけですよね?そうしてください:

int randomIndex(int size){
    int n = randomGenerator.nextInt(size);
    return n;
}
于 2012-07-31T07:19:19.567 に答える
5

このコードを使用すると、任意のタイプのリストを渡すことができます

int randomIndex(List<?> list){
    int n = randomGenerator.nextInt(list.size());
    return n;
}
于 2012-07-31T07:23:47.360 に答える
2

ただそれを作る:

private int randomIndex(int size){
return randomGenerator(size);
}

そして、それらをrandomIndex(yourArray.size());

于 2012-07-31T07:20:38.643 に答える
2

より一般的なのは、メソッドシグニチャListよりも使用することです。ArrayList

int your_method(List<?> a){
//your code
}
于 2012-07-31T14:36:46.600 に答える
1

Generics次のように使用できます

以下のように関数を宣言します

private <T> int randomIndex(ArrayList<T> a){
    int n = randomGenerator.nextInt(a.size());
    return n;
}

ArrayList<String>これで、このような問題なしに、またはArrayList<Integer>この関数に渡すことができます

ArrayList<String> strList = new ArrayList<String>();
strList.add("on1");
System.out.println(randomIndex(strList));
ArrayList<Integer> intList = new ArrayList<Integer>();
intList.add(1);
System.out.println(randomIndex(intList));
于 2012-07-31T10:27:41.983 に答える
0
int randomIndex1(ArrayList<?> a)
{
   int n = randomGenerator.nextInt(a.size());
   return n;
}

int randomIndex2(int size)
{
   int n = randomGenerator.nextInt(size);
   return n;
}
于 2012-07-31T08:41:07.337 に答える