0

したがって、ここでのアイデアは、一連の単語を含む ArrayList があるということです。リストを並べ替えて、偶数のインデックスを持つエントリのみが含まれるようにし、エントリをランダムに選択します。私はこれにバッシュを与え、次のような奇妙なエントリのみを表示するように管理しました:

 int i = 0;

    for (Iterator<Phrase> it = phrases.iterator(); it.hasNext(); i++)
    {
        Phrase current = it.next(); 

        if (i % 2 == 0)
        {
            System.out.println(current);    
        }            
    }

そして、これはArrayListのすべての奇数番号の要素を出力しますが、奇数番号のものからランダムに1つを選択する方法がわかりません。これは私が if ステートメントに入れようとしたものですが、それは私が望むことをしません。要素をランダムに出力しますが、偶数要素だけが必要な場合は奇数要素も含まれます

Random r = new Random();
int x = r.nextInt(phrases.size());
System.out.println(phrases.get(x));

ここで何か助けていただければ幸いです、ありがとう。

4

2 に答える 2

1

しかし、奇数番号のものからランダムに1つを選択する方法がわかりません。

xサイズの半分であることを確認し、それを乗算し2て偶数インデックスを取得するのはどうですか。次のことを試してください。

 Random r = new Random();
 int x = r.nextInt(phrases.size()/2) + (list.size() & 1) - 1; 
   // size is divided by 2 
  // so that x is randomly 0 to (size/2 -1) inclusive
  System.out.println(phrases.get(x * 2)); // ensuring the accessing index are even
于 2013-11-13T14:02:16.283 に答える
0

取得するまでループすることもできますが、技術的には、それは決して起こらない可能性があります。代わりに、x が 2 の倍数であることを確認してください。

            Random r = new Random();
            int x = r.nextInt(phrases.size()); // Might be even or odd
            x = x % 2 != 0 ? x + 1 : x; // if x is not divisible by 2, x + 1, else x
            // x  is is now a multiple of two
            if(x >= phrases.size()){ // make sure x is still within the 
                                                  // index boundaries.
                  x = x-2;
                  if(x < 0){
                      x = 0;
                  }   
            }
            System.out.println(phrases.get(x));
于 2013-11-13T14:07:05.903 に答える