同时运行true和false条件的Java for循环

hgc7kmma  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(172)

我重构了一个工作项目,以练习在中断应用程序时创建可调用的方法。这个应用程序包含一个简单的String数组,该数组包含一个方法,该方法将用户输入与数组匹配,并打印元素名称和索引。
如果我不在if else语句的末尾加上break,应用程序就可以匹配有效的输入,但同时运行if和else语句。它实际上是按照索引的顺序打印if语句,并按照数组的长度打印else输出的次数。在所附的图片中,输入为索引0。if statement output在pic中,索引0与数组中的else输出数匹配并打印。else语句似乎正在读取数组长度。
如果我添加break,应用程序只会识别索引0,并按预期运行if语句,但也会运行else语句。但只会打印出if else输出一次。我希望这一点是明确的。培训师只是简单地说,不可能强制for循环打印出我所理解的内容,但我有一个不同的体验。
下面是代码:

import java.util.Scanner;

public class Main {
  static Scanner scan = new Scanner(System.in);

  public static void main(String[] args) {

    System.out.println("What are you looking for? ");
    //String product = scan.nextLine();
    String[] aisles = {"apples", "bananas", "candy", "chocolate", "coffee", "tea"};
    searchProduct(aisles);
  }

  public static void searchProduct(String[] aisles) {
    String product = scan.nextLine();
    for (int i = 0; i < aisles.length; i++) {
      if (product.equals(aisles[i])) {
        System.out.println("We have " + aisles[i] + " in aisle " + i);

      } else {
        System.out.println("Sorry we do not have that product");

      }
    }
  }
}

我期望匹配有效的用户输入并运行if语句或else语句。

bq3bfh9z

bq3bfh9z1#

我有个建议。

  • 更改方法以返回int(如果产品存在,则返回aisle;如果不存在,则返回-1)。
  • 不要在方法中执行任何I/O操作,只要将搜索的目标作为参数传递即可。
String[] aisles = {
        "apples","bananas","candy","chocolate","coffee","tea"
};
System.out.println("What are you looking for? ");
String product = scan.nextLine();

int aisle = searchProduct(product, aisles);
if (aisle >= 0) {
    System.out.println("We have " + product + " in aisle " + aisle);
} else {
    System.out.println("Sorry we do not have that product");
}
    

public static int searchProduct(String product, String[] aisles) {
    for (int aisle = 0; aisle < aisles.length; aisle++) {
        if (product.equals(aisles[aisle])) {
            return aisle;
        }
    }
    return -1;
}

相关问题