请老师帮忙看看还有什么需要改进的(运行没问题)具体提问在下方

请老师帮忙看看还有什么需要改进的(运行没问题)具体提问在下方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.lxb.test;
 
public class User {
    private String namep;
    private String name;
    private int password;
    private int passwordp;
    public int getPasswordp() {
        return passwordp;
    }
 
    public void setPasswordp(int passwordp) {
        this.passwordp = passwordp;
    }
 
    public String getNamep() {
        return namep;
    }
 
    public void setNamep(String namep) {
        this.namep = namep;
    }
     
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getPassword() {
        return password;
    }
 
    public void setPassword(int password) {
        this.password = password;
    }
 
 
 
 
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
    }
 
}
////////////////////////////////////////////////////////////////////////////////////////////
package com.lxb.test;
 
public class UserTest {
     
     
     
    public static void main(String[] args) {
        User userl=new User();
        userl.setName("Lucy");
        userl.setPassword(123456);
         
        User userlp=new User();
        userlp.setPasswordp(23456);
        userlp.setNamep("Lucy");
             
        if(userl.getName().equals(userlp.getNamep())&userl.getPassword()==userlp.getPasswordp()) {
            System.out.println("用户名:"+userl.getName());
            System.out.println("密码:"+userl.getPassword());
        }else {System.out.println("用户名和密码错误");
             
        }
         
        /////////////////////////////////////////////////////
        User userm=new User();
        userm.setName("Mike");
        userm.setPassword(123456);
         
        User usermp=new User();
        usermp.setPasswordp(123456);
        usermp.setNamep("Mike");
         
        if(userm.getName().equals(usermp.getNamep())&(userm.getPassword()==usermp.getPasswordp())) {
            System.out.println("用户名:"+userm.getName());
            System.out.println("密码:"+userm.getPassword());
        }else {System.out.println("用户名和密码错误");
        }
         
        UserManager um=new UserManager();
        um.show(userl,userm);
    }
 
}
////////////////////////////////////////////////////////////////////////////////////////////
package com.lxb.test;
 
public class UserManager {
     
    public void show(User userl,User userm) {
        userl.getName();
        userl.getPassword();
         
        System.out.println("---------------------");
        userm.getName();
        userm.getPassword();
    }
     
     
     
    public static void main(String[] args) {
     
    }
 
}

问题1: 在.equals方法的使用是否正确。

问题2:对照的用户名和密码可不可以不设为私有,因为我想不设为私有,却报错。

问题3:有没有逻辑错误,或需要优化的地方

辛苦老师啦~~~~~

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

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

2回答
好帮手慕酷酷 2019-09-26 10:11:11

同学你好,

1、在上述的代码中含有setName()方法哦~具体如下:

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

2、同学的思路有些偏差,对于两个user对象进行判断,应该通过创建两个user对象,通过构造方法进行为对应的user对象属性赋值,然后通过创建用户管理类对象,调用用户信息验证的方法show()方法,并传入刚刚赋值好的两个user对象,在show()方法中通过getName()方法获取两个对象对应的name值,进行比较姓名是否相等,同理通过getPassword()方法获取两个对象对应的password值,进行比较密码是否相等。

判断的代码在上述代码中已经给出来了,并没有用其他代码替代哦~具体如下:

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

建议同学可以将《Java封装》1-2和1-3小节重新看一下,对于你对练习的理解有很大帮助。

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

好帮手慕酷酷 2019-09-25 15:25:33

同学,你好!

1、.equals()方法使用的是正确的。

2、用户名和密码一定要设为私有的哦!因为Java的封装性的作用就是,提高代码的安全性,防止该类的成员属性直接被外部类代码随机访问。

3、程序完成得很好,但是还可以进行代码优化,具体如下:

  • 注意代码的规范性,命名规则,当方法或变量名由一个单词组成时,则该单词均小写。当由多个单词组成时,第一个单词所有字母均小写,从第二个单词开始,每个单词的首字母大写。如:namep应改为:nameP

  • User类不需要定义两个name和password属性,每个User对象应该含有一个name和password属性。

  • 根据题目要求,User类中应该编写有参构造函数实现对属性赋值

  • 根据题目要求,用户信息验证的方法应该编写在UserManager类中

  • Test类中,main方法中直接实例化对象两个User对象,然后输出属性信息,然后创建UserManager对象,调用用户信息验证的方法并传入两个User对象,进行判断两个用户信息是否一致就可以了。

  • 建议在进行判断判断两个用户信息是否一致时,将&改成&&,可以提高代码执行效率。

代码修改后如下:

User

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class User {
 
    private String name;
    private int password;
 
    public User(String name, int password) {
        this.name = name;
        this.password = password;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getPassword() {
        return password;
    }
 
    public void setPassword(int password) {
        this.password = password;
    }
 
}

UserManager:

1
2
3
4
5
6
7
8
9
10
11
12
public class UserManager {
 
    public void show(User user1, User user2) {
        if (user1.getName().equals(user2.getName()) && user1.getPassword() == user2.getPassword()) {
            System.out.println("用户名和密码一致");
        else {
            System.out.println("用户名或密码不一致");
 
        }
    }
 
}

UserTest:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class UserTest {
 
    public static void main(String[] args) {
        User u1 = new User("Lucy"123456);
        User u2 = new User("Mike"123456);
        System.out.println("用户名:" + u1.getName());
        System.out.println("密码" + u1.getPassword());
        System.out.println("用户名:" + u2.getName());
        System.out.println("密码:" + u2.getPassword());
        System.out.println("======================");
        UserManager um = new UserManager();
        um.show(u1, u2);
    }
 
}

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

  • 提问者 LLLL_ #1
    老师为什么 1、代码里没有setName这种的,只有getName? 2、在我的代码里,我设置了一个比较的值,比如user1密码 123456,user1P是它的比较密码,这样才能判断。 在您的代码里我却没有看到,是有别的语句代替了吗?
    2019-09-25 22:05:06
  • 提问者 LLLL_ #2
    如果是两个人 分别对比他们的账号密码怎么写呢 ?
    2019-09-26 21:08:27
  • 好帮手慕酷酷 回复 提问者 LLLL_ #3
    同学你好,老师已经在上方的UserManager类的show()方法的代码中,展示出传入两个user对象判断用户名和密码是否一致,也就是两个用户分别对比他们的用户名和密码的代码了!如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-09-27 09:42:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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