在数组中搜索对象时如何实现foreach循环(Java)

在数组中搜索对象时如何实现foreach循环(Java),java,arrays,foreach,Java,Arrays,Foreach,我相信很多人都看过这个程序,但我想知道在数组中搜索对象时如何利用foreach循环?如果我输入任何内容,然后搜索相同的字符串,它表示找不到。 我不介意使用通常的for循环,我只是尝试使用foreach循环来掌握诀窍。该程序使用较旧的for循环 如果需要其他相关代码,我会发布它 private void searchFlowers(String flowerPack[]) { // TODO: Search for a user specified flower Scann

我相信很多人都看过这个程序,但我想知道在数组中搜索对象时如何利用foreach循环?如果我输入任何内容,然后搜索相同的字符串,它表示找不到。 我不介意使用通常的for循环,我只是尝试使用foreach循环来掌握诀窍。该程序使用较旧的for循环

如果需要其他相关代码,我会发布它

    private void searchFlowers(String flowerPack[]) {
    // TODO: Search for a user specified flower
    Scanner in = new Scanner(System.in);
    System.out.println("Please enter the name of the flower you are searching for: ");
    String flowerSearch = in.nextLine();

    //search the array
    for(String flower: flowerPack) { //
        if(flower.equals(flowerPack)) {
            System.out.println("You have that flower in your flower pack.");
            break;
        }
        else if(!flower.equals(flowerPack)){ //if it goes through the entire array without finding the string (flower)
            System.out.println("Did not find that in your flower pack.");
            break;
        }
    }

}
改变

if(flower.equals(flowerPack))

更新:另请参见T.J.Crowder关于为什么必须取消第二张支票的回答。

更改

if(flower.equals(flowerPack))

更新:另请参见T.J.Crowder关于为什么必须取消第二张支票的回答。

您有两个问题:

  • 您正在将
    花卉
    花卉包装
    进行比较;它应该是
    flowerSearch

  • 你总是打破循环,因为如果
    flower.equals(flowerPack)
    ,你就会打破循环!flower.equals(flowerPack)
    。但其中有一条永远是正确的

  • 因此:

    在那里,我们只有在发现一些东西的时候才能提前退出循环。否则,我们会一直循环,直到检查的内容用完为止。旗帜告诉我们是否找到了它

    旁注:你的比较也是区分大小写的,但众所周知,人们不善于保持资本化的一致性。你可以考虑<代码>均衡器> /代码> .< /p> 你有两个问题:

     Boolean flowerFound = false;
     for(String flower: flowerPack) { //
        if(flower.equals(flowerSearch)) {
            System.out.println("You have that flower in your flower pack.");
            flowerFound = true;
            break; 
        }
     }
     if(!flowerFound) {
       System.out.println("Did not find that in your flower pack.");
     }
    
  • 您正在将
    花卉
    花卉包装
    进行比较;它应该是
    flowerSearch

  • 你总是打破循环,因为如果
    flower.equals(flowerPack)
    ,你就会打破循环!flower.equals(flowerPack)
    。但其中有一条永远是正确的

  • 因此:

    在那里,我们只有在发现一些东西的时候才能提前退出循环。否则,我们会一直循环,直到检查的内容用完为止。旗帜告诉我们是否找到了它

    旁注:你的比较也是区分大小写的,但众所周知,人们不善于保持资本化的一致性。您可以考虑<代码>均衡器> /代码> < /P>
     Boolean flowerFound = false;
     for(String flower: flowerPack) { //
        if(flower.equals(flowerSearch)) {
            System.out.println("You have that flower in your flower pack.");
            flowerFound = true;
            break; 
        }
     }
     if(!flowerFound) {
       System.out.println("Did not find that in your flower pack.");
     }
    
    编辑:

    您使用了
    flower.equals(flowersPack)
    。这是错误的
    flowersPack
    是一个数组。因此,您将字符串(
    flower
    )与数组(
    flowersPack
    )进行比较。然而,您想做的是将
    flower
    flowerSearch
    进行比较

    我已经从
    for
    循环中删除了
    else if
    子句。如果
    flowerPack
    中的第一个元素不等于
    flower
    ,则会导致循环终止

    编辑:

    您使用了
    flower.equals(flowersPack)
    。这是错误的
    flowersPack
    是一个数组。因此,您将字符串(
    flower
    )与数组(
    flowersPack
    )进行比较。然而,您想做的是将
    flower
    flowerSearch
    进行比较


    我已经从
    for
    循环中删除了
    else if
    子句。如果
    flowerPack
    中的第一个元素不等于
    flower

    这是一个问题。哈,没错,代码还有更多的错误。刚刚看到这部分,已经设置了错误。这是一个问题。哈,没错,代码还有更多错误。刚刚看到这一部分,已经设定了错误。你正在比较苹果和桃子;)。将
    flower.equals(flowerPack)
    替换为
    flower.equals(flowerSearch)
    。flowerPack是一个完整的数组,因此您将单个字符串与字符串数组进行比较(不会返回true)。此外,如果没有必要,您的else。如果If语句失败,您知道它们不相等,因此不需要检查。这一部分与您的问题无关,但如果使用else,您可以将else替换为else。您正在比较苹果和桃子;)。将
    flower.equals(flowerPack)
    替换为
    flower.equals(flowerSearch)
    。flowerPack是一个完整的数组,因此您将单个字符串与字符串数组进行比较(不会返回true)。此外,如果没有必要,您的else。如果If语句失败,您知道它们不相等,因此不需要检查。这部分与您的问题无关,但是如果您使用else,您可以将else替换为else。噢,哇。。。。那对我来说是极其无知的。我知道得更清楚。我打字的时候一定在看foreach语句。哦,哇。。。。那对我来说是极其无知的。我知道得更清楚。我一定是在打字时看了一眼foreach语句。我通常更喜欢equalsIgnoreCase,但为了简洁起见,我现在就这样保留了它。@csheridan:真的太糟糕了,它会提醒你注意
    flowerPack
    /
    flowerSearch
    的事情。但是…:-)我通常更喜欢equalsIgnoreCase,但为了简洁起见,我暂时就这样保留了它。@csheridan:真的太糟糕了,它会提醒你关于
    flowerPack
    /
    flowerSearch
    的事情。但是…:-)