Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将扫描仪中的值指定给对象?_Java_Eclipse_Class_Object_Tostring - Fatal编程技术网

Java 如何将扫描仪中的值指定给对象?

Java 如何将扫描仪中的值指定给对象?,java,eclipse,class,object,tostring,Java,Eclipse,Class,Object,Tostring,我正试图从扫描仪为类对象分配一个值。我不想使用Teacher a=new Teacher(“Ali”,“SCF333”,“M”)

我正试图从
扫描仪
为类对象分配一个值。我不想使用
Teacher a=new Teacher(“Ali”,“SCF333”,“M”)
这是我的驾驶课:

public class TeacherDriver {
    public static void main(String[]args){


        String data;
        Teacher a = new Teacher();



        Scanner input = new Scanner(System.in);

        System.out.println("Please enter Employee Name: ");
        data=input.nextLine();
        a.setEmpName();
        System.out.println("Please enter Employee ID: ");
        data2=input.nextLine();
        a.setEmpID();
        System.out.println("Please enter Employee Gender: ");
        data3=input.nextLine();
        a.setGender();


        System.out.println(a.toString());


    }
}
这是一节课:

public class Teacher {
    private String empID;
    private String empName;
    private Address address;
    private char gender; 
    private String [] Subject;

    Teacher(){

    }

    Teacher(String empName){
        this.empName=empName;
    }

    Teacher(String empName,String empID){
        this.empName=empName;
        this.empID=empID;
    }

    Teacher(String empName,String empID,char gender){
        this.empName=empName;
        this.empID=empID;
        this.gender=gender;
    }

    Teacher(String empName,String empID,char gender,Address address){

        this.empName=empName;
        this.empID=empID;
        this.gender=gender;
        this.address=address;
    }

    Teacher(String empName,String empID,char gender,Address address,String[]Subject){

        this.empName=empName;
        this.empID=empID;
        this.gender=gender;
        this.address=address;
        this.Subject=Subject;   
    }

    public void setEmpID(){
        this.empID=empID;
    }

    public void setEmpName(){
        this.empName=empName;
    }

    public void setGender(){
        this.gender=gender;
    }

    public String getEmpID(){
        return empID;
    }

    public String getEmpName(){
        return empName;
    }

    public char getGender(){
        return gender;
    }

    public Address getAddress(){
        return address;
    }

    public String[] getSubject(){
        return Subject;
    }

     public String toString()
     {
         String viewteacher = new String("Name: " + empName + "\nID: "+ empID +"\nGender: "+ gender + "\nSubjects: "+ Subject); 
          return viewteacher;
     }
}

我不太确定你到底想要什么,但给你

System.out.println("Please enter Employee Name: ");
data=input.nextLine();
a.setEmpName(data);
System.out.println("Please enter Employee ID: ");
data2=input.nextLine();
a.setEmpID(data2);
System.out.println("Please enter Employee Gender: ");
// Assuming that the user is entering correct data
data3=input.nextLine();
a.setGender(data3.charAt(0));

创建setter方法的方法是错误的,这里您只是将实例变量
empName
设置为相同的实例变量
empName

public void setEmpName(){
    this.empName=empName;
}
您必须将参数传递给set方法,然后该参数将被设置

public void setEmpName(String empName){
    this.empName=empName;
}
TeacherDriver
类需要修改如下:

  System.out.println("Please enter Employee Name: ");
  data=input.nextLine();
  a.setEmpName(data);

获取输入后创建对象

      a.setEmpName();
      a.setEmpID();
上述调用不会设置该值,因为它没有传递任何参数进行设置。修改教师对象创建,如下所示

    Teacher a = new Teacher(data1,data2,data3);

将输入存储在data1、data2和data3变量中后,包括上述调用。

您的设置程序没有传递任何参数来设置值。下面是它们的典型外观

public void setSomething(String something) {
    this.something=something;
}
然后你这样调用它们:

MyClass myObject = new MyClass();
myObject.setSomething(scanner.nextLine());
您可以检查javadocs以了解扫描仪的工作方式

Teacher t=new Teacher(数据、数据2、数据3.charAt(0))