我對此有點困惑。喬恩·帕尼尼 (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
提交
取消