如何让else语句停止重复输出?

问题描述 投票:0回答:1

我只是一个初学者,急需帮助。我正在尝试使用具有搜索功能的链表创建一个简单的库存系统,我坚持使此功能取得圆满成功,因为我的 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 语句之后添加一个中断,但这显然不起作用。我试过放

布尔查找 = false;

并将 if (find = true) 放置在 (fruitMenu.get(j).equalsIgnoreCase(userSearch)) 旁边的 for 循环中 但这是 s,till 给我带来了与 else 语句相同的问题。

由于 if 语句按照我想要的方式工作,所以当用户输入 Cherry 并且它不属于列表时,我只希望 else 语句打印一次“Cherry 不在库存中”。

非常感谢您的所有帮助。

java for-loop if-statement linked-list
1个回答
0
投票

由于您的

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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.