तो मूल रूप से मुझे जो करना है वह यह है कि मुझे तारों की एक सरणी सूची प्राप्त करनी है और इसे दो तारों से भरना है और उनकी तुलना करना है। उदाहरण के लिए यदि एक स्ट्रिंग "1,2,3,4" है और दूसरी "7,6,2,8,1" है तो इसे "1,2" प्रिंट करना चाहिए क्योंकि यह समान संख्याओं को प्रिंट करता है . लेकिन मुझे मिल रहा है और arrayindexoutofbounds अपवाद है और मैं यह नहीं समझ सका कि इसे कैसे ठीक किया जाए। साथ ही, यदि आपके पास इस कोड को छोटा करने के लिए कोई सुझाव है तो कृपया मुझे भी बताएं। मुझे अपना कोड बहुत लंबा बनाने की आदत है।

import java.util.*;
public class Compare
{
 public static void main(String[]args)
 {
   ArrayList<String> hap=new ArrayList<String>();
   hap.add("1,7,8,2");
   hap.add("6,2,4,10,8");
  String ar1=hap.get(0);
   String ar2=hap.get(1);
   String[]arr1=new String[ar1.length()];
   String[]arr2=new String[ar2.length()];
   for(int i=0;i<ar1.length();i++)
   {
    if(ar1.charAt(i)!=(','))
    {
      arr1[i]=""+ar1.charAt(i);
    }
     }
   for(int i=0;i<ar2.length();i++)
   {
    if(ar2.charAt(i)!=(','))
    {
      arr2[i]=""+ar2.charAt(i);
    }
   }
   ArrayList<String> b=new ArrayList<String>();
   int ah=0;
   while(ah<arr1.length)
   {
    for(int i=0;i<arr2.length;i++)
    {
     if(arr1[ah]==arr2[i])           //error on this line
     {
       b.add(arr1[ah]);
     }
     ah++;
    }
   }
   for(int i=0;i<b.size();i++)
   {
     System.out.println(b.get(i));
   }
 }
}


0
imnewatthis 13 अप्रैल 2020, 08:41

1 उत्तर

सबसे बढ़िया उत्तर

यहां स्ट्रिंग से मैन्युअल रूप से सरणी बनाने के बजाय, आप String.split() विधि का उपयोग स्ट्रिंग को , से विभाजित करने के लिए कर सकते हैं, यह नई सरणी लौटाएगा। और आपको अपवाद मिल रहा है क्योंकि arr1 की लंबाई arr2 से कम है। जब आप ah++ को arr2 लूप में बढ़ाते हैं।

नीचे दिया गया कोड आपकी समस्या को ठीक कर देगा और कोड का आकार कम कर देगा।

import java.util.*;
public class Main
{
    public static void main(String[] args) {
        ArrayList<String> hap=new ArrayList<String>();
   hap.add("1,7,8,2");
   hap.add("6,2,4,10,8");
  String ar1=hap.get(0);
   String ar2=hap.get(1);
   String[] arr1=ar1.split(",");
   String[] arr2=ar2.split(",");
   ArrayList<String> b=new ArrayList<String>();
   for(int j=0;j<arr1.length;j++)
   {
    for(int i=0;i<arr2.length;i++)
    {
     if(arr1[j].equals(arr2[i]))           //error on this line
     {
       b.add(arr1[j]);
     }
    }
   }
   for(int i=0;i<b.size();i++)
   {
     System.out.println(b.get(i));
   }
    }
}
0
Ankit Prajapati 13 अप्रैल 2020, 06:27