为什么循环循环只有一次?

时间:2015-04-12 07:41:54

标签: java

出于某种原因,我的for循环只为我的if语句循环一次。我不喜欢这些陈述..

因此,例如,如果我输入day,则循环仅执行一次,并在关键字字符串数组中找到日期。即如果day是数组中的第一个元素。

我的问题是遍历数组并找到用户输入的关键字。例如,如果关键字go位于第5位且用户输入go。我想输出找到的关键字,否则打印 找不到

String[] words = { "day","here","love","maybe","go","together" };

    Scanner scanner = new Scanner(System.in);
    String input = null;


    System.out.println("What are you looking for?");

       input = scanner.nextLine().toLowerCase();
        for (String word : words) {
            if (input.contains(word))  {

                System.out.println("word found" + word);    
            }

            else {
                System.out.println("not found");
            }

        break;
    }

5 个答案:

答案 0 :(得分:2)

for循环的最后一行是break,您应该将break放在if块内。

答案 1 :(得分:2)

当您使用break时,您将离开循环。试试这个:

for (String word : words) {
    if (input.contains(word))  {
        System.out.println("word found" + word);    
        break;
    } 
}

答案 2 :(得分:2)

else语句假设对于每个单词,如果它不匹配则打印未找到。

所以我要做的是创建一个布尔变量isFound并将其设置为false。如果找到,则将其更改为true。如果保留为false,则打印“未找到”语句。

首先,首先从for循环中删除else语句块并使用boolean变量进行尝试。

    String[] words = { "day","here","love","maybe","go","together" };

    Scanner scanner = new Scanner(System.in);
    String input = null;


    System.out.println("What are you looking for?");

       input = scanner.nextLine().toLowerCase();
       boolean isFound = false;
        for (String word : words) {
            if (input.equals(word))  {      
                System.out.println("word found " + word);
                isFound = true;
                break;
            }
    }
        if(!isFound) System.out.println("not found");

答案 3 :(得分:1)

我从您编写的程序中了解到,您希望查看用户输入的单词是否出现在程序中的单词列表中。现在,如果从循环中删除中断将导致每次执行循环时都会打印一行输出。所以我的建议是你把输出语句带出循环。

你可以这样做:

String[] words = { "day","here","love","maybe","go","together" };

    Scanner scanner = new Scanner(System.in);
    String input = null;


    System.out.println("What are you looking for?");

       input = scanner.nextLine().toLowerCase();
        boolean found = false;
        for (String word : words) {
            if (input.contains(word))  {
                found = true;
                break;    
            }
        }
        if(found){
                System.out.println("word found" + word);    
        }else {
                System.out.println("not found");
        }
     }

答案 4 :(得分:0)

它只循环一次,因为你在循环内部有一个break关键字。

一旦你拿出break关键字,你的循环就不会那么好了,就像你的例子一样,它会在找到它正在寻找的单词之前打印“未找到”四次。