java - 通过用户输入搜索2D ArrayList并在Java中显示行

标签 java arraylist

我在完成一项相当简单的作业时遇到了一些麻烦,但在这里找不到似乎有效的答案。

我需要一个包含员工数据的 2D ArrayList,然后能够运行一个单独的函数,允许用户输入员工的姓名,在 ArrayList 中搜索该姓名,如果存在,则显示完整的信息数据行。

这是我到目前为止所得到的:

数组列表

List<List<String>> staffArrayString = new ArrayList<>();
staffArrayString.add(Arrays.asList("Steven George", "12 York Road", "07123456678", "Permanent", "York", "27000/yr"));
staffArrayString.add(Arrays.asList("Rina Veyer", "20 Leeds Road", "08987987765", "Part Time", "Leeds", "10/hr"));
staffArrayString.add(Arrays.asList("Brian Lym", "13 Bradford Road", "07123234345", "Permanent", "Bradford", "27000/yr"));

搜索功能

public void staffNameSearch() {
    System.out.println("Enter name of staff member:");
    String staffName = in.next();
    boolean found = false;
    int row = 0;
    for (int i = 0; i < staffArrayString.size(); i++) {
        for (int j = 0; j < staffArrayString.get(i).size(); j++) {
            if (staffArrayString.get(i).get(j).equals(staffName)) {
                row = staffArrayString.get(i).size();
                found = true;
            }
        }
    }
    if (found = true) {
        System.out.print(staffArrayString.get(row) + " ");
    }
}

我目前在最后的打印行处得到“线程“main”java.lang.IndexOutOfBoundsException 中的异常”的输出,但我一生都无法找出原因。我将不胜感激任何对此的建议(特别是如果这是我的一些明显且愚蠢的错误!)。

最佳答案

  1. 发生错误的原因是您将 row 设置为与行计数器无关的内容。当您发现名称在 i 中的行(变量 j )时第一个元素,设置 row=i .

  2. 小心if (found = true) - 这是不正确的;更喜欢:

    • a) if (found)
    • b) if (found == true)
  3. 为了提高效率,请包括 && !found在 for 循环中,因此一旦您找到某些内容,它们就会退出。

关于java - 通过用户输入搜索2D ArrayList并在Java中显示行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471691/

相关文章:

java - 响应消息 : java. sql.SQLException: Fail to convert to internal representation: jmeter

java - 从数组列表调用方法

java - 如何使用数组列表作为准备好的语句参数

java - 从循环添加到多维数组

java - 如何在 jsp 页面中访问我在 servlet 类中声明的自定义对象

java - 我需要学习如何在情况 6 中返回主菜单,它确认退出,但我不确定它如何循环回菜单

java - Java或Android中是否有类似于python的 `isoweek.Week`的东西?

java - 为什么私有(private)方法也不能是最终的?

java - 如何管理队列/链表的数组/数组列表?

java - 如何对包含整数的 ArrayList<String> 进行排序?