2017-04-17 3 views
0

Ich kann meine Zeichenketten randomisieren, die ich auf jeden Knopf in Android einstelle, aber es gibt Duplikate der gleichen Buchstaben. Wie mache ich es ohne doppelte Buchstaben?Wie kann ich ein Array ohne wiederholte/doppelte Strings randomisieren?

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)]); 

Antwort

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

erm verwenden, warten. Du hast meine Lösung benutzt und aufgeräumt? :) –

+0

Danke euch beiden @EmanuelSeibold und Abhishek Aryan. Es funktioniert perfekt :) –

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

Sie können nur Collections.shuffle (List Liste)

Verwandte Themen