2015-05-07 43 views
0

我想從Scanner中爲類對象賦值。我不想用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; 
    } 
} 
+0

'教師T =新教師(數據,數據2,數據3的javadoc .charAt(0));' – Zion

回答

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); 
0

我不太清楚你到底想要什麼,但這裏你去,

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)); 
0

獲得輸入後創建的對象。

 a.setEmpName(); 
     a.setEmpID(); 

上面的調用將不設置值,因爲它不具有任何參數已經通過設定。修改教師對象的創建如下

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

將輸入存儲在data1,data2和data3變量後包含上述調用。

0

您的設置者沒有任何傳遞參數來設置值。下面就是他們通常應該看看

public void setSomething(String something) { 
    this.something=something; 
} 

,然後你這樣調用它們:

MyClass myObject = new MyClass(); 
myObject.setSomething(scanner.nextLine()); 

您可以檢查掃描儀的工作原理