2012-10-16 14 views
9

मेरा उद्देश्य एरे के ए और चौराहे के चौराहे के मूल्यों को ढूंढना है और उन्हें एक नई सरणी सी में स्टोर करना है ताकि प्रिंटआउट होगा: 3,10,4,8। मैं दिए गए मानों को किसी तृतीय सरणी सी में कैसे आवंटित करूं?दो एरे के छेड़छाड़ को ढूंढना

public static void main(String[] args) { 
     int a[] = {3, 10, 4, 2, 8}; 
     int[] b = {10, 4, 12, 3, 23, 1, 8}; 
     int[] c; 
     int i=0; 
     for(int f=0;f<a.length;f++){ 
       for(int k=0;k<b.length;k++){ 
        if(a[f]==b[k]){ 
//here should be a line that stores equal values of 2 arrays(a,b) into array c 
      } 
      } 
     } 
      for (int x=0; x<c.length; x++){ 
      System.out.println(c[i]); 
      } 
     } 
    } 
+1

यदि यह होमवर्क कि सख्ती से सरणी ickies की आवश्यकता नहीं है, को देखने के 'सेट' इंटरफ़ेस - यदि ओडर रखरखाव की आवश्यकता है तो यह थोड़ा और मुश्किल है, लेकिन ज्यादा नहीं। –

+0

आपके पास वहां कोड है, और एक i (ndex) जो 0 से शुरू होता है जिसका उपयोग नहीं किया जा रहा है। – CBredlow

+0

इस लिंक को जांचें http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html –

उत्तर

0

अगर ग के लिए अनुमति दी उपयोग ArrayList, अपने उगने वाली दाढ़ी सरणी

ArrayList c = new ArrayList(); 
. 
. 
. 
. 
. 
c.add(a[f]); 

भी अगर सरणियों सॉर्ट करने के लिए अनुमति दी है, मैं आप छोटे सरणी सॉर्ट करने के लिए और उसके बाद छोटे सरणी में बड़ा सरणी और द्विआधारी खोज से अधिक पुनरावृति की सिफारिश ।

+0

मुझे लगता है कि आपको यह स्पष्ट करना चाहिए कि यह अनुमति देने पर यह एक अच्छा समाधान है। हम सभी जानते हैं कि ओपी की परियोजना पर कुछ प्रतिबंध हो सकते हैं जो ऐरेलिस्ट का उपयोग करने की अनुमति नहीं देते हैं। –

+0

धन्यवाद। मुझे यकीन है कि यह कुछ ऐसा करेगा जो मुझे चाहिए लेकिन मैं अभी तक ऐरेलिस्ट से परिचित नहीं हूं। –

0

सबसे पहले आप अपने सरणी के लिए जगह आवंटित करने के लिए की जरूरत है:

int[] c = new int[SOME_SIZE]; 

कठिन हिस्सा पता लगाना है कि कितना SOME_SIZE होना चाहिए। चूंकि आप एक चौराहे की गणना कर रहे हैं, इसलिए यह सबसे छोटा a और b का आकार हो सकता है।

अंत में, सरणी में एक तत्व आवंटित करने के लिए, तो आप सिर्फ

c[idx] = a[f] 

अब आप जहां idx चला जाता है का ट्रैक रखने की जरूरत है। मैं idx = 0 से शुरू करने का सुझाव देता हूं और प्रत्येक बार जब आप c में जोड़ने के लिए एक नया तत्व पाते हैं तो इसे बढ़ाते हैं।

+0

यह एक शुरुआत के लिए भ्रमित है। लेकिन धन्यवाद :) –

+0

@AlexandrMelnik यदि आप उलझन में हैं, तो मेरा सुझाव है कि आप एक प्रोग्राम लिखने का प्रयास करें जो एक सरणी को दूसरे में कॉपी करता है। यदि आपको अभी भी इस सरल कार्यक्रम में सरणी का उपयोग करने में समस्याएं हैं, तो आपको उनके बारे में अधिक पढ़ना चाहिए और स्पष्टीकरण के लिए कुछ विशिष्ट प्रश्नों के साथ वापस आना चाहिए। –

9

यह करना एक आसान तरीका होना चाहिए।

int a[] = {3, 10, 4, 2, 8}; 
int[] b = {10, 4, 12, 3, 23, 1, 8}; 
List<Integer> aList = Arrays.asList(a); 
List<Integer> bList = Arrays.asList(b); 
aList.retainAll(bList); 
System.out.println(" a intersection b "+aList); 
int[] c = aList.toArray(new int[0]); 
+0

धन्यवाद। मुझे यकीन है कि यह कुछ ऐसा करेगा जो मुझे चाहिए लेकिन मैं अभी तक ऐरेलिस्ट से परिचित नहीं हूं। –

+0

यह संकलित नहीं करता है। एक के लिए, 'Arrays.asList' की वजह से' सूची

1
public static void main(String[] args) { 
     int a[] = {3, 10, 4, 2, 8}; 
     int[] b = {10, 4, 12, 3, 23, 1, 8}; 
     int[] c = new int[(int)Math.min(a.length, b.length)]; 
     int i=0; 
     for(int f=0;f<a.length;f++){ 
       for(int k=0;k<b.length;k++){ 
        if(a[f]==b[k]){ 
        c[i] = a[f]; 
        i++; 
      } 
      } 
     } 
     for (int x=0; x<i; x++){ 
      System.out.println(c[x]); 
     } 
     } 
    } 

आशा है कि यह मदद करता है। या यदि आपके पास समय जटिलता समस्या है तो Java Set आज़माएं।

0

आप अस्थायी चर की मदद ले सकते हैं (लेकिन यह मूल रूप से पहिया पुनर्रचना है, यदि आप ऐसा करने की आवश्यकता नहीं कर रहे हैं) -

int[] c = new int[0]; 
//... 
    if(a[f] == b[k]) { 
     int[] temp = c; 
     c = new int[c.length + 1]; 
     for(int i=0; i<temp.length; i++) { 
      c[i] = temp[i]; 
     } 
     c[c.length - 1] = a[f]; 
    } 
//... 
+0

जब तक दोनों तरीके सही हैं, मैं उनमें से किसी को भी पसंद कर सकता हूं :) धन्यवाद –

+0

आपका स्वागत है। :) –

संबंधित मुद्दे