日期:2014-05-20 浏览次数:20995 次
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));
        }
    }
}