所以基本上我应该做的是我应该得到一个字符串数组列表,并用两个字符串填充它并进行比较。例如,如果一个字符串是“ 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 :(得分:0)
此处,您可以使用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));
}
}
}