为了账号安全,请及时绑定邮箱和手机立即绑定

ArrayList 集合错误:我的代码的哪一部分是错误的?

ArrayList 集合错误:我的代码的哪一部分是错误的?

翻翻过去那场雪 2023-07-28 09:57:55
我需要编写一个 Mobile 数组列表,执行一些操作,例如添加、删除、更新和显示。然而,当谈到对 arraylist 中的对象进行排序时,我有点困惑。我正在谈论并参考https://beginnersbook.com/2017/08/comparator-interface-in-java/在驾驶类中   //Create an arraylist of Mobile    ArrayList<Mobile> themobile = new ArrayList<>();    Scanner input = new Scanner(System.in);    System.out.println("Welcome to Mobile");    System.out.println("Please select a number in the following: ");    while (true) {          //A list of options         System.out.println("1. Diplay the next mobile.");        System.out.println("2. Display the previous mobile.");        System.out.println("3. Add a new mobile.");        System.out.println("4. Remove a new mobile");        System.out.println("5. Update a mobile.");        System.out.println("0. Exit");        //prompt user input        int choice = input.nextInt();        switch(choice) {            case 1:                //displayNext(themobile);                break;            case 2:                //displayPrevious(themobile);                break;            case 3:                addMobile(themobile);                break;            case 4:                removeMobile(themobile);                break;            case 5:                 updateMobile(themobile);                break;            case 0:                System.out.println("Thank you for using a Mobile arraylist");                System.exit(0);        }    }    Collections.sort((themobile, new MobileByBrandName());    System.out.println("Sorted by brand name" + themobile);    Collections.sort(themobile, new MobileByMoNum());    System.out.println("Sorted by brand name" + themobile);    Collections.sort(themobile, new MobileByInS());    System.out.println("Sorted by brand name" + themobile);}
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

正如这段代码

while (true) {

永远不会退出,此循环下面的代码无法访问

也许System.exit(0);应该只是打破循环while

breaka中的注释switch不会打破while循环


查看完整回答
反对 回复 2023-07-28
?
千巷猫影

TA贡献1829条经验 获得超7个赞

将这些行放入 while 循环中


Collections.sort((themobile, new MobileByBrandName());

System.out.println("Sorted by brand name" + themobile);


Collections.sort(themobile, new MobileByMoNum());

System.out.println("Sorted by brand name" + themobile);


Collections.sort(themobile, new MobileByInS());

System.out.println("Sorted by brand name" + themobile);

Comparator.comparing您还可以使用java 8 及以上版本的可用来简化比较操作。喜欢:


Comparator<Mobile> comparator = Comparator.comparing(new Function<Mobile,

    @Override

    public String apply(Mobile t) {

        return t.getBrandName();

    }

}).thenComparingInt(new ToIntFunction<Mobile>() {


    @Override

    public int applyAsInt(Mobile t) {

        return t.getModelNumber();

    }

}).thenComparingInt(new ToIntFunction<Mobile>() {

    @Override

    public int applyAsInt(Mobile t) {

        return t.getInternalMemoryS();

    }

});


Collections.sort(themobile, comparator);


查看完整回答
反对 回复 2023-07-28
?
LEATH

TA贡献1936条经验 获得超6个赞

while永远不会到达循环后的代码。您需要编写一些逻辑来跳出 while 循环。解决此问题的一种简单方法是:


int choice = -1;

while (choice != 0) {

    choice = input.nextInt();

    switch (choice) {

        //...other cases

        case 0:

            System.out.println("Thank you for using a Mobile arraylist");

    }

}

Collections.sort(...);

System.out.println(...);


查看完整回答
反对 回复 2023-07-28
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信