我希望将13个值分配给字符串而不重复。我也使用了随机函数和shuffle,但是它给了我一个来自这个String数组的值
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
TextView text = (TextView) findViewById(R.id.textField);
String listString = "";
for (String i : orgCards) {
list.add(i);
}
for (int j = 1; j <= 52; j++) {
Collections.shuffle(list);
for (int i = 0; i < list.size(); i++) {
orgCards[i] = list.get(i);
}
for (String ss : orgCards) {
listString = ss;
}
}
text.setText("my string"+" " + listString);
output is : ca
答案 0 :(得分:1)
尝试更改:
for (String ss : orgCards) {
listString = ss; //HERE
}
要:
for (String ss : orgCards) {
listString += ss + " ";
}
答案 1 :(得分:0)
您可以使用StringBuilder
代替:
StringBuilder sb = new StringBuilder();
for (String ss : orgCards) {
sb.append(ss);
}
使用sb.toString()
作为输出。
答案 2 :(得分:0)
使用HashSet
解决此问题。
示例:
class Test {
public static void main(String args[]) {
HashSet<String> al = new HashSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
Iterator<String> itr = al.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出:
阿贾伊
维杰
拉维
答案 3 :(得分:0)
这将从数组中随机打印13个字符串
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
List<String> list = new ArrayList<String>(orgCards.length);
for (String i : orgCards) {
list.add(i);
}
Collections.shuffle(list);
String listString = "";
for (int i=0; i<13; i++) {
listString += " " + list.get(i);
}
TextView text = (TextView) findViewById(R.id.textField);
text.setText("my string:" + listString);