出于某种原因,我的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;
}
答案 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关键字,你的循环就不会那么好了,就像你的例子一样,它会在找到它正在寻找的单词之前打印“未找到”四次。