日期:2014-05-20  浏览次数:20696 次

一段java小程序的问题
现在有两个数组,数组A里面装的是些部门信息(部门编号、部门名称),数组B里面有员工信息(部门编号、员工名称)

我要打印出来的效果是:产品部--------
张三:LLLL
李四:LLLL
实施部--------
核武:LLLL
销售部--------
三五:LLLL
互补:LLLL
市场部--------
李婷:LLLL
人力资源部--------
小虎:LLLL


public static void main(String[] args) {
String []deptInfo=new String []{"1","产品部","2","实施部","3","销售部","4","市场部","5","人力资源部"};
String []employeeInfo=new String[]{"3","三五","3","互补","4","李婷","1","张三","1","李四","2","核武","5","小虎"};
String a=null;
for (int i = 0; i < deptInfo.length; i++) {

if(i%2==0){

a=deptInfo[i];
 
System.out.println(deptInfo[i+1]+"--------");
}

for (int j = 0; j < employeeInfo.length; j++) {

if(j%2==0){

if(a.equals(employeeInfo[j])){

System.out.println(employeeInfo[j+1]+":LLLL");
}

}

}

}

}



不知道我代码哪里有问题,为什么打印员工信息的时候,都重复执行两遍。打印后效果如下产品部--------
张三:LLLL
李四:LLLL
张三:LLLL
李四:LLLL
实施部--------
核武:LLLL
核武:LLLL
销售部--------
三五:LLLL
互补:LLLL
三五:LLLL
互补:LLLL
市场部--------
李婷:LLLL
李婷:LLLL
人力资源部--------
小虎:LLLL
小虎:LLLL


------解决方案--------------------
for example
Java code
String []deptInfo=new String []{"1","产品部","2","实施部","3","销售部","4","市场部","5","人力资源部"};
String []employeeInfo=new String[]{"3","三五","3","互补","4","李婷","1","张三","1","李四","2","核武","5","小虎"};
String a=null;
for (int i = 0; i < deptInfo.length; i+=2) {
    a=deptInfo[i];
    System.out.println(deptInfo[i]+"--------");

    for (int j = 0; j < employeeInfo.length-1; j+=2) {
        if(a.equals(employeeInfo[j])){
            System.out.println(employeeInfo[j+1]+":LLLL");
        }
    }
}

------解决方案--------------------
当下标为奇数时,a的值仍为上一次偶数的赋值,所以重复了。
如:当i=1时,a的值仍为0。
这是我改的
[code=Java][/code] String []deptInfo=new String []{"1","产品部","2","实施部","3","销售部","4","市场部","5","人力资源部"};
String []employeeInfo=new String[]{"3","三五","3","互补","4","李婷","1","张三","1","李四","2","核武","5","小虎"};
String a=null;
for (int i = 0; i < deptInfo.length; i++) {

if(i%2==0){

a=deptInfo[i];
 
System.out.println(deptInfo[i+1]+"--------");
}else
a=null;//当下标位置为部门名称时清空

for (int j = 0; j < employeeInfo.length; j++) {

if(j%2==0){

if(a!=null)//判断是否为空
if(a.equals(employeeInfo[j])){


System.out.println(employeeInfo[j+1]+":LLLL");

}

}

}//a=null; 这里清空也行!

}
}
------解决方案--------------------
当下标为奇数时,a的值仍为上一次偶数的赋值,所以重复了。
如:当i=1时,a的值仍为0。
这是我改的
Java code
        String []deptInfo=new String []{"1","产品部","2","实施部","3","销售部","4","市场部","5","人力资源部"};
        String []employeeInfo=new String[]{"3","三五","3","互补","4","李婷","1","张三","1","李四","2","核武","5","小虎"};
        String a=null;
        for (int i = 0; i < deptInfo.length; i++) {

        if(i%2==0){

        a=deptInfo[i];
         
        System.out.println(deptInfo[i+1]+"--------");
        }else
            a=null;//当下标位置为部门名称时清空
        
        for (int j = 0; j < employeeInfo.length; j++) {

        if(j%2==0){
            
            if(a!=null)//判断是否为空
        if(a.equals(employeeInfo[j])){
            

        System.out.println(employeeInfo[j+1]+":LLLL");
        
        }

        }

        }//a=null; 这里清空也行!

        }
    }