我在java中创建此方法以获取随机字符串:
public String getRandomStringWithExclusion(int array_id, String... exclude) {
String[] myResArray = getResources().getStringArray(array_id);
int idx = new Random().nextInt(myResArray.length);
String random = (myResArray[idx]);
for (String ex : exclude) {
if (random.contains(ex)) {
Toast.makeText(getBaseContext(), "fail", Utils.duration).show();
break;
}
}
return random;
}
但是当我打电话时:
getRandomStringWithExclusion(R.array.test,
"测试");它返回排除的值。
你怎么解决?
我不是java的专家。我是初学者。谢谢
答案 0 :(得分:0)
这是一种方法,但肯定不是最优化的:
要点是,如果您的random
字符串包含exclude
,那么您必须选择另一个random
并重新开始检查。
public String getRandomStringWithExclusion(int array_id, String... exclude) {
String[] myResArray = getResources().getStringArray(array_id);
int idx = new Random().nextInt(myResArray.length);
String random = (myResArray[idx]);
boolean keepGoing = true;
while (keepGoing) {
//Making keepGoing be false (terminating condition),
//And only making true if the random word fails because it has to be excluded
keepGoing = false;
for (String ex : exclude) {
if (random.contains(ex)) {
Toast.makeText(getBaseContext(), "fail", Utils.duration).show();
keepGoing = true;
//looking for another random word
idx = new Random().nextInt(myResArray.length);
random = (myResArray[idx]);
break;
}
}
}
return random;
}
答案 1 :(得分:-1)
你仍然有你的祝酒词,是吗? 所以你的代码工作正常。
如果你找到它,你没有对返回行为作出反应(意思是:无论你是否找到某事,你都会重新进行它)。 而不是中断使用:
return "";
这将停止搜索更多限制并返回方法,结果没有任何结果。
问候。