2017-04-17 29 views
0

我可以将我设置为android中每个按钮的字符串随机化,但有相同字母的重复。我怎么做没有任何重复的信件?如何随机化一个没有任何重复/重复字符串的数组?

Random random = new Random(); 
    String[] letters = {"G","O","K","U","H","A","N","L","Z","M"}; 

    c1r1 = (Button) findViewById(R.id.btn1); 
    c2r1 = (Button) findViewById(R.id.btn2); 
    c3r1 = (Button) findViewById(R.id.btn3); 
    c4r1 = (Button) findViewById(R.id.btn4); 
    c5r1 = (Button) findViewById(R.id.btn5); 
    c1r2 = (Button) findViewById(R.id.btn6); 
    c2r2 = (Button) findViewById(R.id.btn7); 
    c3r2 = (Button) findViewById(R.id.btn8); 
    c4r2 = (Button) findViewById(R.id.btn9); 
    c5r2 = (Button) findViewById(R.id.btn10); 
    first = (Button) findViewById(R.id.first); 
    second = (Button) findViewById(R.id.second); 
    third = (Button) findViewById(R.id.third); 
    fourth = (Button) findViewById(R.id.fourth); 

    c1r1.setText("" + letters[random.nextInt(letters.length)]); 
    c2r1.setText("" + letters[random.nextInt(letters.length)]); 
    c3r1.setText("" + letters[random.nextInt(letters.length)]); 
    c4r1.setText("" + letters[random.nextInt(letters.length)]); 
    c5r1.setText("" + letters[random.nextInt(letters.length)]); 
    c1r2.setText("" + letters[random.nextInt(letters.length)]); 
    c2r2.setText("" + letters[random.nextInt(letters.length)]); 
    c3r2.setText("" + letters[random.nextInt(letters.length)]); 
    c4r2.setText("" + letters[random.nextInt(letters.length)]); 
    c5r2.setText("" + letters[random.nextInt(letters.length)]); 

回答

0
public ArrayList<String> arrayList; 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    arrayList=new ArrayList<String>(); 

    String[] letters = {"G","O","K","U","H","A","N","L","Z","M"}; 
    for (String s:letters) 
     arrayList.add(s); 



    c1r1.setText("" + getRandom()); 
    c2r1.setText("" + getRandom()); 
    ... 
    ... 

} 


public String getRandom(){ 

    String randomString=arrayList.get(random.nextInt(arrayList.size())); 
    arrayList.remove(randomString); 
    return randomString; 

} 
+0

呃,等等。你使用我的解决方案并清理了它? :) –

+0

谢谢@EmanuelSeibold和Abhishek Aryan。它完美的工作:) –

1
private String[] letters = {"G","O","K","U","H","A","N","L","Z","M"}; 
private List<String> list = new ArrayList<String>(Arrays.asList(letters)); 

private String getUniqueRandomString() { 
     int i = ThreadLocalRandom.current().nextInt(0, letters.size() + 1); 
     String s = letters.get(i); 
     letters.remove(i); 
     return s; 
} 
private void init() { 

    c1r1 = (Button) findViewById(R.id.btn1); 
    c2r1 = (Button) findViewById(R.id.btn2); 
    c3r1 = (Button) findViewById(R.id.btn3); 
    c4r1 = (Button) findViewById(R.id.btn4); 
    c5r1 = (Button) findViewById(R.id.btn5); 
    c1r2 = (Button) findViewById(R.id.btn6); 
    c2r2 = (Button) findViewById(R.id.btn7); 
    c3r2 = (Button) findViewById(R.id.btn8); 
    c4r2 = (Button) findViewById(R.id.btn9); 
    c5r2 = (Button) findViewById(R.id.btn10); 
    first = (Button) findViewById(R.id.first); 
    second = (Button) findViewById(R.id.second); 
    third = (Button) findViewById(R.id.third); 
    fourth = (Button) findViewById(R.id.fourth); 

    c1r1.setText(getUniqueRandomString()); 
    c2r1.setText(getUniqueRandomString()); 

// ... 

} 
1

你可以使用 Collections.shuffle(名单列表)