2010-03-20 87 views

回答

6

我相信你的问题从字面上:

Random r = new Random(); // Keep this stored as a field 
List<Character> l = ...; // initialize this somewhere 
char c = l.get(r.nextInt(l.size())); 

取决于几个因素(是字母连续的,你是动态调整的列表),您可以使用数组,或者可能不需要一个集合。请参阅Random课程。

实施例:

Random r = new Random(); // Keep this stored as a field 
List<Character> l = Arrays.asList('A', 'F', 'O', 'W', 'M', 'I', 'C', 'E'); 
char c = l.get(r.nextInt(l.size())); 
+0

我不能编译上面的代码,你可以给我一个样品,例如AFOWMICE的随机信件 – Ivan 2010-03-20 05:40:19

+0

@Ivan您无法编译它,因为您需要初始化列表。之后,它将进行编译,因此只需将所需的字符添加到列表中即可。 – 2010-03-20 05:49:47

1

该片段应是有启发:

import java.util.Random; 

public class RandomLetter { 
    static Random r = new Random(); 
    static char pickRandom(char... letters) { 
     return letters[r.nextInt(letters.length)]; 
    } 
    public static void main(String args[]) { 
     for (int i = 0; i < 10; i++) { 
     System.out.print(pickRandom('A', 'F', 'O', 'W', 'M', 'I', 'C', 'E')); 
     } 
    } 
} 

参见:


如果你想在同一时间做3个字母,那么你可以做这样的事情,而不是:

import java.util.Random; 

public class RandomLetter { 
    static Random r = new Random(); 
    static char pickRandom(char... letters) { 
     return letters[r.nextInt(letters.length)]; 
    } 

    public static void main(String args[]) { 
     for (int i = 0; i < 10; i++) { 
     System.out.println("" + 
      pickRandom("ACEGIKMOQSUWY".toCharArray()) + 
      pickRandom("BDFHJLNPRVXZ".toCharArray()) + 
      pickRandom("ABCDEFGHJKLMOPQRSTVWXYZ".toCharArray()) 
     ); 
     } 
    } 
}