如何从扫描仪获取输入到另一个 class 中我的私有变量字符串?

how to get input from scanner to my private viarable string in another class?

这是我的第一个作业,如何从扫描仪获取输入到我在另一个 class 中的私有 viarable 字符串?

  1. 按照下面的描述创建作者class。(我已经完成了)
  2. 创建一个名为 TestAuthor 的测试 class 来测试 class Author 中的所有 public 方法。以下 是输出的例子。

the questions

这是我的作者代码

package assignment1;

public class Author {
    
    //attribute of the class
    private String name;
    private String email;
    private char gender;
    
    
    //constructor
    public Author(String name, String email, char gender) {
        
        this.name = name;
        this.email = email;
        this.gender = gender;
    }
    
    //methods
    public String getName() {
        
        return name;
    }
    
    public String getEmail() {
        
        return email;
    }
    
    public void setEmail(String newEmail) {
        
        this.email = newEmail;
        
    }
    
    public char getGender() {
        
        return gender;
        
    }
    //method to get data from author object 
    public String toString() {
        
        return "Author[name="+name+", email="+email+", gender="+gender+"]";
                
    }   

}

这是我的测试作者 我得到这个错误 'The method getName() in the type Author is not applicable for the arguments (String)'


package assignment1;

import java.util.Scanner;  // Import the Scanner class


public class TestAuthor {

    public static void main (String[] args) {
        
        
        //test constructor 
        Author newAuthor = new Author();
        
         Scanner input = new Scanner(System.in);
         System.out.println("Please enter name : ");
         String name = input.nextLine();
            newAuthor.getName(name);
            System.out.println("Name : "+newAuthor.getName());
        
    }
    
    
    
    
    
}

TIA

您需要为作者 class 中的名称 属性 添加 setter 方法,如下所示:

包分配1;

public class作者{

//attribute of the class
private String name;
private String email;
private char gender;


//constructor
public Author(String name, String email, char gender) {
    
    this.name = name;
    this.email = email;
    this.gender = gender;
}

//methods
public String getName() {
    
    return name;
}

public void setName(String name){
  this.name = name;
 }

public String getEmail() {
    
    return email;
}

public void setEmail(String newEmail) {
    
    this.email = newEmail;
    
}

public char getGender() {
    
    return gender;
    
}
//method to get data from author object 
public String toString() {
    
    return "Author[name="+name+", email="+email+", gender="+gender+"]";
            
}   

}

在 TestAuthor class 中,您需要调用 setter 来设置值,然后像这样调用:

包分配1; 导入 java.util.Scanner; // 导入扫描仪 class

public class 测试作者 {

public static void main (String[] args) {
     
    //test constructor 
    Author newAuthor = new Author();
    
     Scanner input = new Scanner(System.in);
     System.out.println("Please enter name : ");
     String name = input.nextLine();
        newAuthor.setName(name);
        System.out.println("Name : "+newAuthor.getName());
    
}
   

}

谢谢你的帮助,我得到了答案 这是我的测试作者文件

package assignment1;

import java.util.Scanner;  // Import the Scanner class


public class TestAuthor {

    public static void main (String[] args) {
        
        //set variables()
        String name;
        String email;
        char gender;
        
        
        //Scanner input object
        Scanner input = new Scanner(System.in);
        
        
        //get user input
        System.out.println("Please enter Name : ");
        name= input.nextLine();
        
        System.out.println("Please enter Email : ");
        email= input.nextLine();
        
        System.out.println("Please enter Gender : ");
        gender= input.nextLine().charAt(0);
        
        
        //
        Author newAuthor = new Author(name,email,gender);
        name = newAuthor.getName();
        email = newAuthor.getEmail();
        gender = newAuthor.getGender();
        

        //output toString
        System.out.println(newAuthor.toString());
        
        
        //set new email
        System.out.println("Please change Email : ");
        String newEmail= input.nextLine();
        newAuthor.setEmail(newEmail);
        
        
        //output
        System.out.println("Name : "+newAuthor.getName());
        System.out.println("Email : "+newAuthor.getEmail());
        System.out.println("Gender : "+newAuthor.getGender());
        
        
    }
    
    
    
    
    
}