String aaa= "password";
int wloop = 0;
while (wloop<myarraylist.size()) {
for (int i = 0; i < myarraylist.size(); i++) {
Something qwerty = myarraylist.get(i);
String bbb= qwerty.getinfor();
if (aaa.equals(bbb)) {
System.out.println("you have found it!");
wloop = myarraylist.size();
}wloop++;
}
System.out.println("nothing have been found");
}
我有一个关于我想用for循环迭代的东西的arraylist。每次迭代时,我都会从arraylist中获得一个对象。我以String格式获取其信息。如果我找到字符串&#34;密码&#34;在对象信息中,我想在屏幕上打印一个msg说&#34;我已经创建了它&#34;。
你可以假设我只会找到字符串&#34;密码&#34;只有一次。
然而,如果在循环整个arraylist之后,我想要消息&#34;没有找到任何内容&#34;在屏幕上打印。
然而
正如目前所写,&#34;没有找到任何内容&#34;无论发生什么,都会一直打印到屏幕上。我无法在for循环中发生任何事情,在每次迭代之后(其中每个迭代都被if语句检查)是一个处理动作的条件。我尝试将整个for循环放在if语句中,但是添加&#34;返回true&#34;某处。
答案 0 :(得分:1)
在Java 8+中,您可以使用Stream
和anyMatch
来确定是否匹配。像,
if (myarraylist.stream().anyMatch(qwerty -> aaa.equals(qwerty.getinfor()))) {
System.out.println("you have found it");
} else {
System.out.println("nothing found");
}
在早期版本中,您需要标志。而且你不需要嵌套循环,但我更喜欢for-each
循环。像,
boolean found = false;
for (Something qwerty : myarraylist) {
if (aaa.equals(qwerty.getinfor())) {
found = true;
break;
}
}
if (found) {
System.out.println("you have found it");
} else {
System.out.println("nothing found");
}
答案 1 :(得分:0)
你可以使用一个标志来设置我们没有找到的密码的状态,具体取决于你可以打印语句。也许是这样的:
String aaa= "password";
int wloop = 0;
boolean isPasswordFound = false;
while (wloop<myarraylist.size()) {
for (int i = 0; i < myarraylist.size(); i++) {
Something qwerty = myarraylist.get(i);
String bbb= qwerty.getinfor();
if (aaa.equals(bbb)) {
System.out.println("you have found it!");
isPasswordFound = true;
wloop = myarraylist.size();
}wloop++;
}
if(!isPasswordFound) {
System.out.println("nothing have been found");
}
}