for if if循环嵌套错误消息,如果找不到任何内容

时间:2017-12-11 03:34:27

标签: java for-loop if-statement while-loop

                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;某处。

2 个答案:

答案 0 :(得分:1)

在Java 8+中,您可以使用StreamanyMatch来确定是否匹配。像,

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");
                }

            }