以下是代码:
import java.util.Scanner;
public class Finder {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String [] names = new String[5];
String searchTerm = "";
for (int i = 0; i <= names.length - 1; i++) {
System.out.print("Enter a name: ");
names[i] = scnr.next();
}
System.out.println();
System.out.print("Enter a name to search for: ");
searchTerm = scnr.next();
for (int i = 0; i <= names.length - 1; i++) {
if (searchTerm.equals(names[i])) {
System.out.println(searchTerm + " found!!");
}
else {
System.out.println(searchTerm + " not found!!");
}
}
}
}
我在第二个for循环中处理if / else语句,当我添加语句的else部分时,它返回:
输入名称:Luke
输入名称:Kassy
输入名称:Chloe
输入名称:Jon
输入名称:Jake
输入要搜索的名称:Chloe
Chloe没找到!!
Chloe没找到!!
克洛伊找到了!!Chloe没找到!!
Chloe没找到!!
我不确定为什么它只是没有说&#34; Chloe发现!!&#34;而不是它说的是什么?
答案 0 :(得分:4)
现在使用您的代码,当您循环查找元素&#34; Chloe&#34;在names
数组中,无论如何,您都会遍历每个元素并打印出一个语句。 &#34;小克&#34;是names[2]
,但您的循环首先检查names[0]
和names[1]
。由于他们不是&#34; Chloe&#34;,它将打印&#34; Chloe未找到&#34; (if语句的else部分)。一旦到达names[2]
,它就会找到&#34; Chloe&#34; if if语句的if部分将被执行,打印出&#34; Chloe找到&#34;。但是你的循环不会就此停止,因此循环将查看names[3]
和names[4]
并打印出&#34; Chloe未找到&#34;因为他们都不等于&#34; Chloe&#34;。简单的解决方法是仅打印&#34; Chloe未找到&#34;当循环结束而没有找到&#34; Chloe&#34;并且只打印&#34; Chloe发现&#34;当在循环中间时,&#34; Chloe&#34;找到了。有很多方法可以做到这一点,但我建议的一种方法是在循环完成后使用布尔变量进行检查以查看&#34; Chloe&#34;被发现与否。
boolean termFound = false;
for (int i = 0; i <= names.length - 1; i++) {
if (searchTerm.equals(names[i])) {
System.out.println(searchTerm + " found!!");
termFound = true;
break;//if term is found, you can break out of the loop early
}
}
if(!termFound){ //if searchTerm was not found
System.out.println(sertTerm + " not found!!");
}