这是一个非常简单的解决方案。
现在,当我说这话时,如果你想要一个简单的解决方案,你可以有一个专用的字符串变量来存储最后使用的问题。那么如果你把它初始化为一个空字符串就变得很简单了。假设变量最后被调用。
String q = myString[rgenerator.nextInt(myString.length)];
//q has a string which may or may not be the same as the last one
//the loop will go on until this q is different than the last
//and it will not execute at all if q and last are already different
while (last.equals(q))
{
//since q and last are the same, find another string
String q = myString[rgenerator.nextInt(myString.length)];
};
//this q becomes last for the next time around
last = q;
现在在其他几个问题中,这里要记住的一个关键是,这只是确保 q[1] 不能跟随 q[1],但它并不能完全避免这样的情况,只是为了荒谬,说 q[1] , q[2], q[1], q[2] 等等。
这是一个同样简单的 ArrayList 。
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
for (int i = 0; i < myString.length)
{
list1.add(myString[i]);
}
q = (String)list1.get(rgenerator.nextInt(list1.size()));
list1.remove(q);
list2.add(q);
if (list1.isEmpty())
{
list1.addAll(list2);
list2.clear();
}