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 星