在数组中搜索对象时如何实现foreach循环(Java)
我相信很多人都看过这个程序,但我想知道在数组中搜索对象时如何利用foreach循环?如果我输入任何内容,然后搜索相同的字符串,它表示找不到。 我不介意使用通常的for循环,我只是尝试使用foreach循环来掌握诀窍。该程序使用较旧的for循环 如果需要其他相关代码,我会发布它在数组中搜索对象时如何实现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
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)
。但其中有一条永远是正确的 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)
。但其中有一条永远是正确的 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
的事情。但是…:-)