我应该先从 Jon 和他的朋友那里得到副本吗?还是只获取值而不获取重复项?

我对此有点困惑。


乔恩·帕尼尼 (Jon Panini) 是一位世界杯贴纸收藏家。当他遇到他的同学时,他们通常会用他们的重复贴纸交换他们没有的那些。Jon 希望编写一个小程序,允许他输入他已经拥有的贴纸编号列表(您可以假设他以 - 1 结束输入),然后他将输入他朋友拥有的第二个贴纸编号列表(您可以假设列表由 -1 终止)程序应该显示 Jon 已经拥有哪些贴纸以及他没有哪些贴纸。


到目前为止我做了什么===>


public static void main(String[] args) {

    // TODO Auto-generated method stub


    ArrayList<Integer> john = new ArrayList<>();  

    ArrayList<Integer> friend = new ArrayList<>();


    Scanner scan = new Scanner(System.in);


    //12 7 327 7 12 34 23 79 -1

    //7 90 56 7 12 0 14 14 -1

    System.out.print("Enter Jon list of numbers(Enter -1 to terminate):");

    int i;

    do {

        i=scan.nextInt();

        if(i!=-1)

            john.add(i);

    }while(i!=-1);


    System.out.print("Enter Jon's friend list of numbers(Enter -1 to terminate):");

    do {

        i=scan.nextInt();

        if(i!=-1)

            friend.add(i);

    }while(i!=-1);


    //List for duplicates of john and and his friend

    ArrayList<Integer> johnD = new ArrayList<>();  

    ArrayList<Integer> friendD = new ArrayList<>();


    for(int j=0;j<friend.size();j++){

        for(int k=j;k<friend.size();k++){

            if(friend.get(j)==friend.get(k) && j!=k) {

                friendD.add(friend.get(j));

            }

        }

    }


    for(int j=0;j<john.size();j++){

        for(int k=0;k<john.size();k++){

            if(john.get(j)==john.get(k) && j!=k) {

                johnD.add(john.get(j));

            }

        }

    }


    ArrayList<Integer> have = new ArrayList<>();  

    ArrayList<Integer> doNotHave = new ArrayList<>();


    for(int j=0;j<friendD.size();j++){

        for(int k=0;k<johnD.size();k++){

            if(friendD.get(j)==johnD.get(k)) {

                if(!have.contains(friendD.get(j)))

                    have.add(friendD.get(j));

            }


            if(friendD.get(j)!=johnD.get(k)) {

                if(!doNotHave.contains(friendD.get(j))&& !johnD.contains(friend.get(j)))

                    doNotHave.add(friendD.get(j));

            }

        }

    }



aluckdog
浏览 86回答 1
1回答

喵喵时光机

我可能误解了这个问题,但是如果您要就如何回答提示寻求建议,那么我可以试一试。在误读提示本身之后......我认为提示的一部分只是告诉您重复是可能的,但对于输出来说不是必需的,因为我们正在寻找唯一的条目。我实际上会通过克隆列表然后删除新列表的重复项来避免使用列表中的重复项。输出只要求我们返回约翰与他的朋友相比拥有和没有的东西,不一定关心是否有重复。也可能有助于在比较之前对列表进行排序。希望这有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java