黑马程序员技术交流社区

标题: 参数列表求助 [打印本页]

作者: 冯大卫    时间: 2014-9-1 15:20
标题: 参数列表求助
class Student{
private String name;
private int age;
Student(String name,int age){
  this.name=name;
  this.age=age;
}
public String toStrint(){
  return name+":::"+age;
}
}
class xuexiao{
public void xuexiao1(){
  TreeMap<String,ArrayList<Student>> xuexiao=new TreeMap<String,ArrayList<Student>>();
  ArrayList<Student> yiban=new ArrayList<Student>();
  ArrayList<Student> erban=new ArrayList<Student>();
  xuexiao.put("yiban",yiban);
  xuexiao.put("erban",erban);
  yiban.add(new Student("zhangsan",12));
  yiban.add(new Student("zhangsan",13));
  yiban.add(new Student("zhangsan",14));
  erban.add(new Student("wangwu",23));
  erban.add(new Student("wangwu",24));
  erban.add(new Student("wangwu",22));
}
public void getStudent(TreeMap<String,ArrayList<Student>> xuexiao,ArrayList<Student> banji){
  Iterator<String> it=xuexiao.keySet().iterator();
  while(it.hasNext()){
   String s=it.next();
   ArrayList<Student> ss=xuexiao.get(s);
   if(ss==banji)
    System.out.println(s);
   Iterator<Student> itr=banji.iterator();
   while(itr.hasNext()){
    Student sss=itr.next();
    if(ss==banji)
     System.out.println(sss);
   }
  }
}
}
class p{
public static void main(String[] args){
  xuexiao xx=new xuexiao();
  xx.xuexiao1();
  xx.getStudent(xuexiao,erban);
}//我就是想这么传,但是这是错误的参数,运行就Error,上面的代码我应该怎么写,这里可以这么传?
}
作者: 依然超级赛亚人    时间: 2014-9-1 17:19
不知道你的原本的代码里有没有导包,这上面没有,如果你那代码中也没导包那记得导包。你要给getStudent()方法传xuexiao和erban,但是这两个变量哪里来?你定义了xuexiao1()这个方法没有将里面的xuexiao和erban取出来,光调用这个xuexiao1()方法是没有任何作用的,getStudent()没有拿到。我稍微给你改一下,你看看想采用吗?其实就是把xuexiao1()方法代码移到主方法中来了。还有,你的这个代码说实在的阅读性稍差,把变量尽量定义的有点符合常规,个人意见而已,请斟酌!
  1. class p{
  2. public static void main(String[] args){
  3. TreeMap<String,ArrayList<Student>> xuexiao=new TreeMap<String,ArrayList<Student>>();
  4.   ArrayList<Student> yiban=new ArrayList<Student>();
  5.   ArrayList<Student> erban=new ArrayList<Student>();
  6.   xuexiao.put("yiban",yiban);
  7.   xuexiao.put("erban",erban);
  8.   yiban.add(new Student("zhangsan",12));
  9.   yiban.add(new Student("zhangsan",13));
  10.   yiban.add(new Student("zhangsan",14));
  11.   erban.add(new Student("wangwu",23));
  12.   erban.add(new Student("wangwu",24));
  13.   erban.add(new Student("wangwu",22));
  14.   xuexiao xx=new xuexiao();
  15.   xx.getStudent(xuexiao,erban);
  16. }//我就是想这么传,但是这是错误的参数,运行就Error,上面的代码我应该怎么写,这里可以这么传?
  17. }
复制代码

作者: 梦里听传说    时间: 2014-9-1 17:37
import java.util.*;
class Student{
private String name;
private int age;
Student(String name,int age){
  this.name=name;
  this.age=age;
}
public String toStrint(){
  return name+":::"+age;
}
}
class xuexiao{
/*               
public void xuexiao1(){
         TreeMap<String,ArrayList<Student>> xuexiao=new TreeMap<String,ArrayList<Student>>();
                 ArrayList<Student> yiban=new ArrayList<Student>();
                 ArrayList<Student> erban=new ArrayList<Student>();
  xuexiao.put("yiban",yiban);
  xuexiao.put("erban",erban);
  yiban.add(new Student("zhangsan",12));
  yiban.add(new Student("zhangsan",13));
  yiban.add(new Student("zhangsan",14));
  erban.add(new Student("wangwu",23));
  erban.add(new Student("wangwu",24));
  erban.add(new Student("wangwu",22));
  这一段不能放在这个类里的方法里,虽然你在main里调用了该方法但是当这方法执行完这段代码就从内存里消失了,
  所以造成了你的困惑,把这段代码放到main里执行就行了
}*/
public void getStudent(TreeMap<String,ArrayList<Student>> xuexiao,ArrayList<Student> banji){
  Iterator<String> it=xuexiao.keySet().iterator();
  while(it.hasNext()){
   String s=it.next();  
   ArrayList<Student> ss=xuexiao.get(s);
   if(ss==banji)
    System.out.println(s);//还有你这里面的代码有问题,打印的是内存引用 你修改下就好了,我都不帮你改了
   Iterator<Student> itr=banji.iterator();
   while(itr.hasNext()){
    Student sss=itr.next();
    if(ss==banji)
     System.out.println(sss);
   }
  }
}
}
class txt01
{
        public static void main(String[] args)
        {
         
                 TreeMap<String,ArrayList<Student>> xuexiao=new TreeMap<String,ArrayList<Student>>();
                 ArrayList<Student> yiban=new ArrayList<Student>();
                 ArrayList<Student> erban=new ArrayList<Student>();
                  xuexiao.put("yiban",yiban);
                  xuexiao.put("erban",erban);
                  yiban.add(new Student("zhangsan",12));
                  yiban.add(new Student("zhangsan",13));
                  yiban.add(new Student("zhangsan",14));
                  erban.add(new Student("wangwu",23));
                  erban.add(new Student("wangwu",24));
                  erban.add(new Student("wangwu",22));
                  xuexiao xx=new xuexiao();
                  xx.getStudent(xuexiao,erban);
        }//我就是想这么传,但是这是错误的参数,运行就Error,上面的代码我应该怎么写,这里可以这么传?
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2