(Java)如何让程序在获得特定值之前重试某些内容?

时间:2015-08-21 03:06:19

标签: java string treeview

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

只要branch包含TreeView 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中的内容。但我想要它,所以它会重新尝试,直到找到包含branch的{​​{1}}。 我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

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="的项目,那么您将陷入无限循环。

答案 1 :(得分:2)

基本上你需要一个循环 - 下面是一种方法。您可以进一步增强它以在'n'次尝试之后退出循环等(n可能是= listNum),否则如果您的数据都不包含“= 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;
    }       
}