首页 > 解决方案 > 在 ArrayList 中查找匹配项的 Java 方法

问题描述

我的程序中有以下方法,它允许用户在 ArrayList 中输入与笔记本电脑关联的唯一 ID。

所需的输出如下:

我非常接近实现这一目标;但是我只能弄清楚如何让它打印它是否与列表中的每台笔记本电脑匹配。例如,如果用户输入的 ID 与列表中三台笔记本电脑中的一台匹配,它将打印如下:

Acer Predator Helios 300 CPU:Intel i7-9750h GPU:NVIDIA GTX1660ti 内存:16GB ID:1234567

无效的身份证件。

无效的身份证件。

所以我的问题是:如何让它只打印单个匹配项或“无效 ID”,同时仍然能够遍历整个列表以检查匹配项?不一定要你用勺子喂我解决问题,但至少帮助我指出正确的方向或帮助逻辑。我提前感谢您的帮助!

我的方法如下:

private static void findLaptop(ArrayList arr) {

    //Prompt user to input an ID.
    System.out.println("Input ID: ");
    System.out.println();

    //Scan for user input.
    Scanner keyboard = new Scanner(System.in);
    int inputId = keyboard.nextInt();

    //Loop through ArrayList and check for a match.
    for(int i=0; i<arr.size(); i++) {

        //If entered ID matches, print laptop information.
        if(inputId == ((Laptops) arr.get(i)).getId()) {
            System.out.println(((Laptops)arr.get(i)).getModel() + " CPU: " + ((Laptops)arr.get(i)).getCpu() + " GPU: " +
                    ((Laptops)arr.get(i)).getGpu() + " Memory: " + ((Laptops)arr.get(i)).getMemory() + "GB ID: " + 
                    ((Laptops)arr.get(i)).getId());
        }
        //If entered ID does not match, print invalid ID.
        else if(inputId != ((Laptops) arr.get(i)).getId()) {
            System.out.println("Invalid ID.");
        }
    }
}

标签: javaloopsarraylistmethodsuser-input

解决方案


使用以下代码:

    //Create a boolean
    boolean found= false; 
    for(int i=0; i<arr.size(); i++) {
        //If entered ID matches, print laptop information.
        if(inputId == ((Laptops) arr.get(i)).getId()) {
            System.out.println(((Laptops)arr.get(i)).getModel() + " CPU: " + ((Laptops)arr.get(i)).getCpu() + " GPU: " +
                    ((Laptops)arr.get(i)).getGpu() + " Memory: " + ((Laptops)arr.get(i)).getMemory() + "GB ID: " + 
                    ((Laptops)arr.get(i)).getId());
                    //set boolean true and break
                    found = true;
                    break;
        }
    }
  //Out side the look check If entered ID does not match, print invalid ID.
    if(!found) {
       System.out.println("Invalid ID.");
    }

推荐阅读