Getter 方法在增强循环中不起作用

Getter method not working in enhanced loop

我正在制作一个增强的 for 循环来对我的部件数组列表中的部件对象进行排序。但是,当增强的 for 循环到达 if 语句时,它什么都不做(Damper 除外)并且没有错误,所以我不知道为什么它不起作用。 thelist 是我的包含对象的数组列表的名称。

    for(int z=0; z<20; z++){
        displayMenu();
            int selection = sc.nextInt();
            if(selection == 0){
                System.out.println("You have exited the system");
            } else if(selection == 1){  
                System.out.println("Choose stock name to replenish");
                for(Part y: thelist){
                    String nS = sc.nextLine();
                    System.out.print(nS);
                    if(nS.equals(y.getName())){
                        System.out.println("Please enter replenish quantity");
                        int qty = sc.nextInt();
                        y.replenish(qty);
                        System.out.println("Complete");
                    }
                }
            } else if

我的对象

    Part part0 = new Part("p100", "Spring", 43, 120);
    Part part1 = new Part("p101", "Damper", 72, 150);
    Part part2 = new Part("p102", "Lower CA", 38, 80);
    Part part3 = new Part("p103", "Upper CA", 26, 70);

只是为了证明 'String nS' 正在工作

此外,它仅适用于阻尼器

首先,您需要添加

sc.nextLine();

之后
int qty = sc.nextInt();

并在

之后添加相同的内容
int selection = sc.nextInt();

消耗换行符。

其次,如果您要搜索 nS,为什么要将它放在 for 循环中?放在for循环外,然后搜索。

    String nS = sc.nextLine();
    System.out.print(nS);

    for (Part y : thelist) {
        if (nS.equals(y.getName())) {
            System.out.println("Please enter replenish quantity");
            int qty = sc.nextInt();
            sc.nextLine();
            y.replenish(qty);
            System.out.println("Complete");
        }
    }

您的问题是您使用的是 nextInt,然后是 nextLine,然后又是 nextInt。新的行字符把你搞得一团糟。

for(int z=0; z<20; z++){
    displayMenu();
        int selection = Integer.parseInt(sc.nextLine());
        if(selection == 0){
            System.out.println("You have exited the system");
        } else if(selection == 1){  
            System.out.println("Choose stock name to replenish");
            for(Part y: thelist){
                String nS = sc.nextLine();
                System.out.print(nS);
                if(nS.equals(y.getName())){
                    System.out.println("Please enter replenish quantity");
                    int qty = Integer.parseInt(sc.nextLine());
                    y.replenish(qty);
                    System.out.println("Complete");
                }
            }
        } else if