1-13 编程练习(7)
在Test类中进行赋值。我的想法是使用set方法进行赋值,可是我试了两种方法,都不可以。
方式1:
User testOne=new User(setUsername("Lucy"),setPassword(123456)); User testTwo=new User(setUsername("Mike"),setPassword(123456));
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);
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
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();这种方式定义对象。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
第一题,我不知道你的题目要求是什么,但从报错提示来看,一共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())
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星