我正在使用以下代码,我的主要意图是如果条件匹配则退出循环并返回预期数据。
在下面的列表中,我获得实际预期列表但无法返回数据,我想要的是什么。我正在返回测试数据值。
public String getlistdata(){
String s = "testting data";
if(!(this.element==null)){
ListIterator<ElementData> li = this.element.listIterator();
List<String> list = new ArrayList<String>();;
while (li.hasNext()) {
list.add(li.next().getElemType().toString());
}
Log.e("LIST", "TEST LIST"+list+"=="+list.size());
for (String temp : list) {
System.out.println(temp);
if (temp.toString().equalsIgnoreCase("group")){
s = li.next().getGrpResult();
break ;
}
}
}
return s;
}
请在此代码中找出我的错误。
我解决了以下用户2310289答案的上述问题,但问题是我又有了另一个问题
我有问题,如果我在这里有两个或更多组,所有时间都执行了 第一组。如何执行第二次此方法调用下一组。 或第三次第三组。这意味着如果第二次如何开始这个 调用此函数,从第一个groupindex + 1和第三个开始索引 调用此方法第二个groupindex + 1,依此类推。我有很多 在这里混淆。方面提示
文字,群组,群组,普通,数字,群组,文字
答案 0 :(得分:1)
而不是break
使用return s
。
if (temp.toString().equalsIgnoreCase("group")){
s = li.next().getGrpResult();
return s ;
}
答案 1 :(得分:0)
只需对if条件进行以下更改,
if (temp.toString().equalsIgnoreCase("group")){
s = li.next().getGrpResult();
return s;
}
答案 2 :(得分:0)
为什么即使打扰将数据添加到本地List
也不会重复使用。
<强>更新强>
另外
首先,代码while (li.hasNext()) {
在列表中进行迭代,然后尝试li.next().getGrpResult();
将抛出NoSuchElementException
- 因为迭代没有下一个元素
试
String s = "testing data";
if(!(this.element==null)){
ListIterator<ElementData> li = this.element.listIterator();
while (li.hasNext()) {
ElementData ed = li.next();
String temp = ed.getElemType().toString();
System.out.println(temp);
if (temp.equalsIgnoreCase("group")){
return ed.getGrpResult ();
}
}
}
return null;
<强>更新强>
根据您的评论,如果您希望所有匹配ElementData
,而不是return ed.getGrpResult();
,只需添加到ArrayList
myList.add (ed.getGrpResult ());
,然后代码将继续循环播放。在方法结束时返回ArrayList
。