带有排除的java随机字符串

时间:2014-11-14 13:36:46

标签: java android string random

我在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的专家。我是初学者。谢谢

2 个答案:

答案 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 "";

这将停止搜索更多限制并返回方法,结果没有任何结果。

问候。