日期:2014-05-20 浏览次数:20796 次
import java.util.*; public class CompanyTest { /* * 从数组sb 中读出字符串,并分割成新数组 比较新数组的元素,对于指定元素个数相同的,放入二维数组中,以此来分类 */ public static void main(String args[]) { String[] sb = { "a b c", "b c d", "a c d" }; ArrayList<String> al = new ArrayList<String>(); ArrayList<String> del = new ArrayList<String>(); String[][] a = new String[10][10]; //要么一并,声明了,要么后面自己声明 for (int i = 0; i < sb.length; i++) { al.add(sb[i]); } Iterator<String> it = al.iterator(); while (it.hasNext()) { String s1 = al.get(0); String[] str0 = s1.split(" ");//看不懂你这个" "+0是上面意思? System.out.println(str0.length); String s = it.next(); String[] str = s.split(" ");//看不懂你这个" "+0是上面意思? int l = 0; int k = 0; for (int i = 0; i < str0.length; i++) for (int j = 0; j < str.length; j++) { if (str0[i].equals(str[j])) k++; } System.out.println("k:" + k);//这里有点小问题。还有你的大括号最好加起来,不好调试的。 if (k >= 2){ a[k][l] = s;//空指针异常,原因看上面 del.add(s); } k = 0; if (!it.hasNext()) { l++; al.removeAll(del);//这里也有问题,用removeAll是对集合的操作。 remove是对元素的操作。不一样的。 System.out.println("l:" + l); continue; //不用加 标记就可以实现。再说如果后面没有代码,continue,也可以不要了。 } } } }
------解决方案--------------------
import java.lang.reflect.Array; import java.util.*; public class CompanyTest { /* * 从数组sb 中读出字符串,并分割成新数组 比较新数组的元素,对于指定元素个数相同的,放入二维数组中,以此来分类 */ public static void main(String args[]) { String[] sb = { "a b c", "b c d", "a c d", "a d e", " a f e" }; ArrayList<String> al = new ArrayList<String>(); ArrayList<String> del = new ArrayList<String>(); String[][] a = new String[sb.length][sb.length]; for (String s : sb) { al.add(s); } int rowA = 0; while (al.size() != 0) { int colA = 0; for (String tempStr : al) { String s1 = al.get(0); String[] str0 = s1.split(" "); System.out.println(str0.length); String[] str = tempStr.split(" "); int k = 0; for (int i = 0; i < str0.length; i++) { for (int j = 0; j < str.length; j++) { if (str0[i].equals(str[j])) { k++; } } } System.out.println("k:" + k); if (k >= 2){ a[rowA][colA++] = tempStr; del.add(tempStr); } } al.removeAll(del); rowA++; } for (String[] temp : a) { System.out.println(Arrays.toString(temp)); } } }