提问人:idontknowwataymdoing 提问时间:11/2/2023 最后编辑:idontknowwataymdoing 更新时间:11/23/2023 访问量:64
如何使 else 语句停止重复输出?
How do I make the else statement to stop repeating output?
问:
我只是一个初学者,急需帮助。我正在尝试使用带有搜索功能的链表制作一个简单的库存系统,我坚持使此功能取得圆满成功,因为我的 if else 语句包含在一个循环中,当它在列表中找不到元素时,它会重复打印输出。它基本上是遍历每个元素,并在程序每次遍历每个元素时打印我在 else 语句上分配的字符串。我不确定我是否解释得很好,但这是对我的心态造成伤害的代码:
作为参考,fruitMenu 是我的链表的名称。 if 语句工作得很好,只是 else 语句不起作用。
//case five - search for a fruit within the inventory
public static void caseFive(){
System.out.print("What fruit would you like to search? Search for: ");
int listSize = fruitMenu.size()-1;
s.nextLine();
String userSearch = s.nextLine();
for (int j = 0; j <= listSize; j++)
{
if (fruitMenu.get(j).equalsIgnoreCase(userSearch))
{
System.out.println(userSearch + " is in the inventory");
System.out.println(fruitMenu);
break;
}
else {
System.out.println(userSearch + " is not in the inventory");
}
}
代码最初是一个 while 循环,但将其更改为 for 循环,因为我希望它能起作用,而且我尝试在 else 语句之后也放一个休息时间,这显然不起作用。我试过把
布尔值 find = false;
并放置在 if (find = true) 中 for 循环中 (fruitMenu.get(j).equalsIgnoreCase(userSearch)) 但它是 S,直到给我同样的 else 语句问题。
由于 if 语句的工作方式正是我想要的,我只是希望 else 语句在用户输入 Cherry 并且它不是列表的一部分时打印一次“Cherry 不在库存中”。
非常感谢您的所有帮助。
答:
由于您的循环中有该语句,因此它将为每个与用户搜索词不匹配的水果打印“不在库存中”。您可以设置一个标志来确定是否找到了水果,并且仅在未找到水果时在循环外打印消息:else
for
for
public static void caseFive() {
System.out.print("What fruit would you like to search? Search for: ");
int listSize = fruitMenu.size() - 1;
s.nextLine();
String userSearch = s.nextLine();
boolean found = false;
for (int j = 0; j <= listSize; j++) {
if (fruitMenu.get(j).equalsIgnoreCase(userSearch)) {
System.out.println(userSearch + " is in the inventory");
System.out.println(fruitMenu);
found = true;
break; // you found the fruit, so you can exit the loop
}
}
if (!found) {
System.out.println(userSearch + " is not in the inventory");
}
}
默认情况下,您的状态是未找到水果,只有在语句中找到水果后才能更改此状态。因此,如果您遍历所有 fruit,而没有找到用户指定的 fruit,则语句中的代码永远不会执行,您的状态仍将是 。因此,将是真的,您的消息将在最后打印一次。if
if
found == false
!found
在不重复输出的情况下在列表中查找值。
例如,这是您的列表:
List fruitMenu= Arrays.asList("Durian", "Mango", "Banana");
然后,您需要从用户那里获得输入。
//This is based from your existing method
public static void caseFive() {
System.out.print("What fruit would you like to search? Search for: ");
String userSearch = s.nextLine();
doSearch(userSearch, fruitMenu);
}
那么你可以考虑这个方法:
public static void doSearch(String userSearch, List fruits)
{
if (fruits.contains(userSearch))
{
System.out.println(userSearch + " is in the inventory");
}
else
{
System.out.println(userSearch + " is not in the inventory");
}
}
希望对你有所帮助。:)
评论
for(String element: fruitMenu) { if(element.equalsIgnoreCase(userSearch)) { System.out.println(userSearch + " is in the inventory"); break; } }
boolean
=
==
boolean
if(found) { … }