1-13 编程练习(7)

1-13 编程练习(7)

在Test类中进行赋值。我的想法是使用set方法进行赋值,可是我试了两种方法,都不可以。

方式1:

User testOne=new User(setUsername("Lucy"),setPassword(123456));
User testTwo=new User(setUsername("Mike"),setPassword(123456));

http://img1.sycdn.imooc.com//climg/5c3b46d700018dc314120588.jpg

public class Test{
    // 测试方法
	public static void main(String[] args) {
     //实例化对象,调用相关方法实现运行效果
    // User testOne=new User("Lucy",123456);
    // User testTwo=new User("Mike",123456);
    User testOne=new User(setUsername("Lucy"),setPassword(123456));
    // testOne.setUsername("Lucy");
    // testOne.setPassword(123456);
    
    User testTwo=new User(setUsername("Mike"),setPassword(123456));
    // testTwo.setUsername("Mike");
    // testTwo.setPassword(123456);
    
    testOne.showInformation();
    testTwo.showInformation();
    }
}
public class User{
    //定义属性用户名、密码
    private String username;
    private int password;
    
    /*通过构造方法实现属性赋值*/
    public User(String username, int password){
        this.username=username;
        this.password=password;
    }
    
    /*set/get设定*/
    public String getUsername(){
        return this.username;
    }
    public void setUsername(String username){
        this.username=username;
    }
    /**/
    public int getPassword(){
        return this.password;
    }
    public void setPassword(int password){
        this.password=password;
    }
    
    /**/
    //描述信息
  public void showInformation(){
    //   System.out.println("用户名:"+getUsername());
    //   System.out.println("密码:"+getPassword());
      System.out.println("用户名:"+this.username);
      System.out.println("密码:"+this.password);
  }
}
public class UserManager{
    // 用户信息验证的方法
    public String checkUser(User one, User two) {
       // 判断用户名是否为空,是否一致
    if(one.getUsername().equals(two.getUsername())){
        //System.out.println("用户名一致");
    }else{
        System.out.println("用户名不一致");
    }

    //判断密码是否为空,是否一致
    if(one.getPassword().equals(two.getPassword())){
        //System.out.println("密码一致");
    }else{
        System.out.println("密码不一致");
    }
    return one.getUsername();
    }
}


方式2:

    User testOne=new User();
    User testTwo=new User();
    testOne.setUsername("Lucy");
    testOne.setPassword(123456);
    testTwo.setUsername("Mike");
    testTwo.setPassword(123456);

http://img1.sycdn.imooc.com//climg/5c3b47dc0001e57213880568.jpg

public class Test{
    // 测试方法
	public static void main(String[] args) {
     //实例化对象,调用相关方法实现运行效果
    // User testOne=new User("Lucy",123456);
    // User testTwo=new User("Mike",123456);
    
    User testOne=new User();
    User testTwo=new User();
    testOne.setUsername("Lucy");
    testOne.setPassword(123456);
    testTwo.setUsername("Mike");
    testTwo.setPassword(123456);
    
    // User testOne=new User(setUsername("Lucy"),setPassword(123456));
    // User testTwo=new User(setUsername("Mike"),setPassword(123456));

    
    testOne.showInformation();
    testTwo.showInformation();
    }
}
public class User{
    //定义属性用户名、密码
    private String username;
    private int password;
    
    /*通过构造方法实现属性赋值*/
    public User(String username, int password){
        this.username=username;
        this.password=password;
    }
    
    /*set/get设定*/
    public String getUsername(){
        return this.username;
    }
    public void setUsername(String username){
        this.username=username;
    }
    /**/
    public int getPassword(){
        return this.password;
    }
    public void setPassword(int password){
        this.password=password;
    }
    
    /**/
    //描述信息
  public void showInformation(){
    //   System.out.println("用户名:"+getUsername());
    //   System.out.println("密码:"+getPassword());
      System.out.println("用户名:"+this.username);
      System.out.println("密码:"+this.password);
  }
}
public class UserManager{
    // 用户信息验证的方法
    public String checkUser(User one, User two) {
       // 判断用户名是否为空,是否一致
    if(one.getUsername().equals(two.getUsername())){
        //System.out.println("用户名一致");
    }else{
        System.out.println("用户名不一致");
    }

    //判断密码是否为空,是否一致
    if(one.getPassword().equals(two.getPassword())){
        //System.out.println("密码一致");
    }else{
        System.out.println("密码不一致");
    }
    return one.getUsername();
    }
}


以上的这两种使用set()方法对赋值数值进行封装的方式都不可行。请问为什么?并且如何在本题目中使用set()方法进行赋值?谢谢。


另外,为什么只有不使用set()方法的赋值方式是以运行的

    User testOne=new User("Lucy",123456);
    User testTwo=new User("Mike",123456);

难道是因为我在User类中所写的set()方法有误?可是User类并没有报错呀。谢谢。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕阿满 2019-01-16 09:35:40

同学你好,如果只定义了有参构造方法,在定义对象时,直接使用带参构造定义对象。如:

 User testOne=new User("Lucy",123456);
 User testTwo=new User("Mike",123456);

调用有参构造定义对象的同时完成对属性的赋值操作。

不过建议同学在User类中加上无参构造方法。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕阿满 2019-01-14 10:21:30

1、同学你好,同学在定义User类时,定义了带参构造方法,同学可以在带参构造中使用set方法给属性赋值,在测试类中使用带参构造方法给属性赋值。如:

public User(String username, int password){
        this.setUsername(username);
        this.setPassword(password);     
}

2、通过如下方式可以给对象赋值

     User testOne=new User();
    User testTwo=new User();
    testOne.setUsername("Lucy");
    testOne.setPassword(123456);
    testTwo.setUsername("Mike");
    testTwo.setPassword(123456);

但是前提条件是User类中有无参构造方法,才能使用User testOne=new User();这种方式定义对象。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_光光_kotMPS #1
    那请问,如果我在定义User类时只定义了带参构造方法,不定义无参构造方法。那这种情况的话,我在测试类中怎样定义对象,又怎样对对象进行赋值呢?谢谢。
    2019-01-15 23:10:04
林懿 2019-01-14 01:23:26

第二种方式,一共三个报错,

前两个报错还是因为你在 Test 类中要使用 User user = new User(); 来创建对象,你就必须要在 User 类中提供一个无参的构造函数

public User() {

}

第三个报错与之前第一种方式里的相同

林懿 2019-01-14 01:17:57

第一题,我不知道你的题目要求是什么,但从报错提示来看,一共5个错误,

前4个错误都是因为在创建 User 对象时,构造方法的类型不匹配,你的 User 类里没有提供无参的构造函数,所以创建对象时必须要为构造器传入一个 String 类型和一个 int 类型。而你在 Test 类中使用的 setUsername() 方法是 User 类的成员方法,你在使用这个方法之前必须要创建一个 User 类的对象。如果你想使用 setUsername() 来给属性赋值,可以在 User 类中加入一个无参的构造函数

public User(){

}

然后在 Test 类中先创建 User 类的对象,在使用 setUsername() 赋值

User user = new User();
user.setUsername("某某某");

第5个错误是因为 user.getPassword() 返回的是一个 int 类型的值,int 类型是一个基本数据类型,不能调用方法,判断 int 类型的值是否相等可以使用 ==

if (one.getPassword() == two.getPassword())
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师