2016-05-17 25 views
0

如何删除重复的号码并要求用户添加新号码以替换重复的号码?比方说,用户要求5号码:使用我做的代码6, 7, 8, 7, 9,输出Number 7 was duplicated in position 3替换ArrayList

现在我需要,是要求用户添加一个新的号码,以取代7这样就不会有帮助任何重复。

所以我希望整个输出为Your numbers without duplicates:,它会打印输入的数字而不会有任何重复。

它们进入的顺序对我很重要,因为我想继续测试ArrayList并尽量不要让自己混淆。 这是我的代码:

import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.Set; 
import javax.swing.JOptionPane; 

public class Test { 
    public static void main(String[] args) { 
     ArrayList<Integer> al = new ArrayList<Integer>(); 

     int opt = Integer.parseInt(JOptionPane.showInputDialog("How many numbers?"); 
     for (int i=0 ; i < opc ; i++) { 
     al.add(Integer.parseInt(JOptionPane.showInputDialog("Which numbers?"))); 
     } 

     Set<Integer> s = new HashSet<>(); 
     for (Integer d : al){ 
      if (s.add(d) == false) 
       JOptionPane.showMessageDialog(null,"Number " + d + " was duplicated in position " + al.lastIndexOf(d)); 
       JOptionPane.showMessageDialog(null,"Replace new number"); //This is where I would like to replace the numbers if possible 
      } 
     JOptionPane.showMessageDialog("Your numbers without duplicates: "); //This is where it would print 
     } 
    } 
} 

顺便说一句,我很抱歉,如果它没有任何意义给你。我很难解释我的意思。但我试着用细节解释我需要的一切。

+0

我想你需要ArrayList.set()方法... http://www.tutorialspoint.com/java/util/arraylist_set.htm –

回答

0

我想你需要ArrayList.set()方法。

for (Integer d : al){ 
       while (s.add(d) == false){ //replace if with while to keep looking for duplicate 
        JOptionPane.showMessageDialog(null,"Number " + d + " was duplicated in position " + al.lastIndexOf(d)); 
        JOptionPane.showMessageDialog(null,"Replace new number"); 


//  al.set(d,[set the new value here]); 
     } 
    } 
1

而不是做s.add(d)并检查false,然后尝试替换重复的号码,您应该检查重复使用s.contains(d)。这不会将该号码添加到列表中,并且当用户给出另一个非重复号码时,可以将其添加到列表中。

相关问题