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

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

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

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:

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:

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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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