在java中将类变量传递给另一个类的方法

m2xkgtsf  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(259)

我刚开始学习JavaRenow,我创建了一个包含变量id和name的class student,另一个class studentlist是student的arraylist。
我想创建seach函数,允许传递stunt类的变量名(id或name)和变量值。我该怎么做?

class Student{
    String ID;
    String name;

    public Student(){

    }

    public Student(String ID,String name){
        this.ID =  ID;
        this.name = name;
    }

    public String getStudent() {
        String info = this.ID +"\t\t\t"+ this.name;
        return info;
   }
}

class StudentList{

    private ArrayList <Student> list = new ArrayList<>();
    private int counter = 0;
    static Scanner sc = new Scanner(System.in);

    public StudentList(){

    }

    public StudentList(Student stu){
        Student student = new Student(stu.ID,stu.name);
        this.list.add(student);
        this.counter++;
    }
    public int seach(String type(name or ID) , String value ){
        int i;
        int found = 0;
        for(i = 0; i < list.size();i++){

            if(value.equals(list.get(i).type){
                found++;
                System.out.println(value.equals(list.get(i).type);
            }
        }

        return found;
    }
}
qhhrdooz

qhhrdooz1#

为班级学生的id和name创建getter。比你在seach的要求还多

public int seach(String type , String value ){
    int i;
    int found = 0;
    for(i = 0; i < list.size();i++){
        Student student =  list.get(i);
        if(value.equals(student.getID()) || value.equals(student.getName())){
            found++;
            System.out.println(value.equals(list.get(i).type);
        }
    }

    return found;
}
gblwokeq

gblwokeq2#

首先,我建议设置 Student 从班级到私人。然后可以添加setter和getter。

public class Student {
   private String ID;
   private String name;

   public Student() {}

   public Student(String ID, String name) {
     this.ID = ID;
     this.name = name;
   }

   public String getID() { return ID; }
   public String getName() { return name;
   public void setID(String ID) { this.ID = ID; }
   public void setName(String name) { this.name = name; }
}

在你们班上 StudentList 我将拆分并扩展搜索的功能,而不是将值类型作为附加参数传递。

public class StudentList {
      ...
      public int searchByName(String name) {
         for(int i=0; i < list.size(); i++) {
            if(list.get(i).getName().equals(name)) return i;
         }

         return -1;
      }

      public int searchByID(String ID) {    
         for(int i=0; i < list.size(); i++) {
            if(list.get(i).getID().equals(ID)) return i;
         }

         return -1;
      }

      public int searchStudent(Student stud) { return list.indexOf(stud); }
}

如果您真的需要一个函数来捆绑所有这些,您可以添加另一个函数,该函数通过一个标志来决定应该用传递的参数调用哪个函数。您还可以在这里为参数添加检查,同时具有更大的灵活性和责任分离。

public int search(int flag, arg Object) {
    if(flag == 0) return searchStudent((Student) arg);
    else if(flag == 1) return searchByID((String) arg);
    else return searchByName((String) arg);
}

补充说明:如果你想用你的名字标明名单上的学生人数 counter 变量,我强烈建议删除此变量并始终调用 size() 你的列表的方法。每个java集合(即arraylist)都提供了它,在删除或添加student之后,它总是返回正确的值。为这个任务实现自己的计数器将导致更容易出错的源代码。

相关问题