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