我制作的程序可以根据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}}。
我该怎么做?
答案 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;
}
}