2016-06-10 66 views
-1

輸入值爲1,2,1,2,5,6,1,2,8,9,5,6,8,9。 輸出應採用以下格式:如何從Java中的循環對數組中獲取唯一的整數對?

1,2 5,6 8,9 

在2d字符串數組中。我想這個代碼,但它不工作:

for(int u=0;u<=length_mfr/2;u=u+2) 
{ 
    for(int o=1;o<=length_mfr/2;o=o+2) 
    { 
     if(main_index[u][0]==main_index[u+2][o+2]) 
    } 
} 
+0

您對二維數組的期望輸出格式是什麼? – mattymanme

+0

什麼是邏輯具有如此.. – Moumit

+0

如果它的1,2,8,9,5,6,1,2,8,9個獨特的nos對應存儲在[x] [2 ] –

回答

0

考慮到與重複的int[] i,您可以創建一個TreeSet並添加陣列i的每個元素。 TreeSet會自動刪除重複項,並且只會按升序包含唯一元素。

public static void main(String args[]) 
{ 
    int[] i = { 1, 2, 1, 2, 5, 6, 1, 2, 8, 9, 5, 6, 8, 9 }; 
    Set<Integer> set = new TreeSet<>(); 
    for (int e : i) 
    { 
     set.add(e); 
    } 
// create an ArrayList to store all unique set values 
// use Iterator to loop through ArrayList 

    ArrayList ar = new ArrayList<>(set); 
    Iterator it = ar.iterator(); 

// create index variable to loop through the str array 
    int index = 0; 

// create String array str with the size of the set 
    String[] str = new String[set.size()]; 

    while(it.hasNext() && index<set.size()){ 
     str[index] = it.next().toString(); 
     index++; 
    }  
} 
+0

我如何將這些獨特的對存儲在2 d字符串數組中? –

-1

我希望這段代碼能幫到你。

public static void main(String[] args) { 

    int[] num = { 1, 2, 1, 2, 5, 6, 1, 2, 8, 9, 5, 6, 8, 9 }; 
    ArrayList<Integer> numDup = new ArrayList<Integer>(); 
    numDup.add(num[0]); 
    for (int i = 0; i < num.length; i++) { 
     if (!numDup.contains(num[i])) { 
      numDup.add(num[i]); 
     } 
    } 

    for (Integer pVal : numDup) { 
     System.out.println(pVal); 
    } 
} 
+0

我如何將這些獨特的對存儲在二維字符串數組中? –

1

你正在尋找獨特,不只是唯一的編號。因此,第一步是創建一個類來表示一對。

public class Pair { 
    public final int first; 
    public final int second; 

    public Pair(int a, int b) { 
     first = a; 
     second = b; 
    } 

    public boolean equals(Object o) { 
     if (! (o instanceof Pair)) return false; 
     Pair p = (Pair)o; 
     return first == p.first && second == p.second; 
    } 

    public int hashCode() { 
     return first + second << 16; 
    } 

    public String toString() { 
     return "(" + first + "," + second + ")"; 
    } 

    public String[] toStringArr() { 
     String[] s = new String[2]; 
     s[0] = "" + first; 
     s[1] = "" + second; 
     return s; 
    } 
} 

從那裏,你可以把你的輸入,以對,做加工的需要,並變回字符串數組。

public static void main(String args[]){ 
    int[] arr = { 1, 2, 1, 2, 5, 6, 1, 2, 8, 9, 5, 6, 8, 9 }; 
    Set<Pair> set = new HashSet<>(); 
    for(int i = 0; i < arr.length-1; i+=2) { 
     set.add(new Pair(arr[i], arr[i+1])); 
    } 

    String[][] arr2 = new String[set.size()][]; 
    int i = 0; 
    for(Pair p : set) { 
     arr2[i] = p.toStringArr(); 
    } 

    //Unique pairs now in string array arr2. 
} 
+0

如果您希望按照它們首次出現的順序保持對,請使用LinkedHashSet而不是HashSet。 –

相關問題