我对此有点困惑。乔恩·帕尼尼 (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)); } } }
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
我可能误解了这个问题,但是如果您要就如何回答提示寻求建议,那么我可以试一试。
在误读提示本身之后......我认为提示的一部分只是告诉您重复是可能的,但对于输出来说不是必需的,因为我们正在寻找唯一的条目。我实际上会通过克隆列表然后删除新列表的重复项来避免使用列表中的重复项。输出只要求我们返回约翰与他的朋友相比拥有和没有的东西,不一定关心是否有重复。也可能有助于在比较之前对列表进行排序。
希望这有帮助!
添加回答
举报
0/150
提交
取消