急!!!请问此段Java代码问题出在哪里 ,for 循环走不完这退出
import java.util.*;
public class Ss {
/* 从数组sb 中读出字符串,并分割成新数组
比较新数组的元素,对于指定元素个数相同的,放入二维数组中,以此来分类 */
public static void main (String args[]){
String[]sb={"a b c","b c d","a c d"};
ArrayList<String> al=new ArrayList<String>();
String[][]a=new String[10][];
int []c=new int[3];
for (int i=0;i<sb.length;i++) {al.add(sb[i]);}
Iterator<String> it=al.iterator();
a:while(it.hasNext()){
String s1=al.get(0);
String[]str0=s1.split(" "+0);
String s=it.next();
String []str=s.split(" "+0);
int t=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]==str[j])k++;
System.out.println("c[0]:"+cl.size());}
if(k>=2) {
a[k][l]=s;
bl.add(s);
System.out.println("k:"+k);
System.out.println("l:"+l);
}
k=0;
if( !it.hasNext()){
l++;
al.remove(bl);
System.out.println("l:"+l);
continue a;
}
}
}
}
[解决办法]
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)); } }}