(Java) 如何让程序重试某些操作直到获得特定值?

(Java) How do I make a program retry something until it gets a specific value?

我正在制作一个程序,可以根据 branches 的名称过滤 TreeView 中的信息 (branches)。

我制作了一个从 TreeView 菜单中随机获取 branch 的方法,只要 branch 包含 String "=s="。 方法如下:

public TreeItem<String> randomBranch(TreeItem<String> parent){
    Random rand = new Random();
    int listNum = parent.getChildren().size();

    int num = rand.nextInt(listNum) + 0;

    TreeItem<String> getIT = parent.getChildren().get(num);

    if(getIT.toString().contains("=s=")){
        return getIT
    }
    else{
    (Missing_code_here)
    }
}

我不知道在 else 中放什么。但我想要它,所以它会重新尝试,直到找到包含 "=s="branch。 我该怎么做?

如果我理解正确,你只需要一个简单的循环。

public TreeItem<String> randomBranch(TreeItem<String> parent) {

    Random rand = new Random();
    int listNum = parent.getChildren().size();

    int num;
    TreeItem<String> getIT;

    do {
        num = rand.nextInt(listNum) + 0;
        getIT = parent.getChildren().get(num);
    } while (!getIT.toString().contains("=s="));

    return getIt;
}

当然,如果结构不包含带有字符串 "=s=" 的项目,您将陷入无限循环。

基本上您需要一个循环 - 下面是一种实现方法。您可以进一步增强它以在 'n' 次尝试等后退出循环(n 可能 = listNum),否则如果 none 的数据包含“=s=”,它将陷入循环.

 TreeItem<String> result;
 boolean branchFound=false;

 while(!branchFound){
    int num = rand.nextInt(listNum) + 0;

     TreeItem<String> getIT = parent.getChildren().get(num);

     if(getIT.toString().contains("=s=")){
       result = getIT;
       branchFound =true;
    }       
}