我试图打破for循环并仅在满足一个字符串文本(条件)之后执行一次函数。
我尝试了break,尝试了许多其他方法,但是如果条件在for循环等中,则无法使用它。
static void show(@NonNull Context context, @NonNull Arri<Mylist> notification) {
....
String strings = "text1,text2,text3,text4,...";
String[] stringarray = strings.split(",");
for(String name : stringarray){
notifyMe(name, notification);
}
private static void notifyMe(String text, @NonNull Arri<Mylist> notification) {
if (notification.loadr().project().toString().toLowerCase().contains(text.toLowerCase())) {
Log.d("TAG", "contains:" + text);
} else {
Log.e("TAG", "doesnt contain:" + text);
}
}
目前,它执行的次数更多,但是我只需要执行一次即可。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以在notifyMe
内致电if
:
for (String name : stringArray) {
if (someLogic(name)) {
notifyMe(name, notification);
break;
}
}
答案 1 :(得分:0)
如果要在满足条件时中断循环,只需使用break
语句:
public void breakIt(){
String stringToSplit = "text1,text2,text3";
String[] strings = stringToSplit.split(",");
String condition = "text2";
for (String s : strings){
if (s.equals(condition)) {
System.out.println(s);
break;
}
}
}
您也可以使用return
来“离开”循环。查看有关return
和break
之间的区别的更多信息:
break vs return
答案 2 :(得分:0)
获取您的条件并从notifyMe中删除并放入for循环中,或者在此位置使用布尔响应并评估为for循环。否则,您将无法停止此循环。
答案 3 :(得分:0)
我已经找到了解决我的问题的方法,如果有人在这里需要它。如果有更好的方法,请随时发布。
static void show(@NonNull Context context, @NonNull Arri<Mylist> notification) {
....
String strings = "text1,text2,text3,text4,...";
String[] stringarray = strings.split(",");
for(String name : stringarray){
if (notifyMe(name, notification)) {
break;
}
}
}
private static boolean notifyMe(String text, @NonNull Arri<Mylist> notification) {
if (notification.loadr().project().toString().toLowerCase().contains(text.toLowerCase())) {
return true;
}
return false;
}