首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

急请教此段Java代码有关问题出在哪里 ,for 循环走不完这退出

2012-05-28 
急!!!请问此段Java代码问题出在哪里 ,for 循环走不完这退出import java.util.*public class Ss {/* 从数

急!!!请问此段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;
}  
}
 
}
}


[解决办法]

Java code
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,也可以不要了。            }        }    }}
[解决办法]
Java code
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));        }    }} 

热点排行