正在回答
问题比较多,我们分别来看一下哈~~
1、第一个问题:这个类如何理解使用,小括号里的两个参数为什么有空格?
首先UserManager是类,checkUser是类中的一个方法,UserManager类是在Test类中,main方法执行的时候,比较两个用户信息是否一致的时候进行调用的。至于方法括号里面的空格,在方法定义时,括号中的参数描述格式就是:数据类型 参数名 类型和参数名中间必须加空格分隔。这点和基础语法中方法格式的定义是一样的。
2、在主程序中调用UserManager um=new UserManager();为什么会报错?
由于没有看到完整代码,此处不知道你是如何在主程序中调用的,如果只从实例化的角度来说,实例化语法本身没错,你可以把代码贴出来,看一下具体错误原因。
3、user1.equals(user2)这个用法对还是user1.equals()==user2.equals()
在checkUser这个方法中,是分别针对两个用户的用户名和密码进行比较。实现思路可以参考如下:
a) 获取 one 和 two 的 getName 方法的结果分别与 null 进行比较,判断两个用户的用户名是否为空
b) 获取 one 和 two 的 getName 方法的结果相互进行比较,判断用户名是否相同
密码的判断参考用户名的判断逻辑,至于字符串之间内容的比较,可以参考习题中提示的equals方法的使用。
如果解决了你的疑惑,欢迎采纳~~~
1、如果你是指checkUser方法中的参数列表中的User,那是你在User.java中定义的那个User类。就跟String一样,是一个类型,只是,String是系统定义好可以直接使用的类,而User是你自己定义好的类。
2、关于你代码中的问题:
关于User类:
a) 只需要定义一组用户名和密码的的属性,然后通过封装生成set、get方法。当需要两个用户的时候,只需要实例化两次即可,不用像你代码中写的定义两组,如果依照这种编码方式,当需要定义100个类对象,你要怎么写呢?
b) 注意编码规范,老师在课程中也反复强调,要注意命名规范,用户名可以起userName,不要随便起个名字,以后会加大程序维护的难度。
c) 密码建议写成String类型,更符合实际应用。
关于Test类:
a) main方法中需要实例化两个User对象进行比较,而不是一个对象赋值两次。所谓面向对象思想,跟现实生活中处理问题的方式和方法是类似的,所以,比较两个用户信息,一定需要两个对象之间比较。一个对象赋值两次是自己跟自己比较。。。
关于UserManager类:
a) checkUser方法的作用是进行两个对象之间的信息比对,也就是传入的User one 和 User two 两个对象之间的比对,所以方法中不需要额外创建us对象。
b) 因为传入方法的参数名是one two,所以方法中不能定义String类型的同名参数,一定会报错的。
c) one,two两个对象的信息比较需要分别比较用户名和密码,而相关的信息,则是通过“对象名.get*** ”的方式获取。
与null进行比对的时候可以直接使用类似:
String onePass=one.getPassword(); if(onePass==null){ }
null上面不能加双引号,null表示空对象,"null"表示字符串,内容是null。含义是不一样的。
两个用户信息之间的比对,类似用户名是否相同,可以使用类似:
String onePass=one.getPassword(); String twoPass=two.getPassword(); if(onePass.equals(twoPass)){ }
此时,就是equals方法使用的地方了。这里不能直接用==比较字符串,如果要比较字符串的内容,必须使用equals,关字符串的==和equals的区别后面的课程中会详细讲解。
建议你把《方法》、《面向对象》、《封装》的课程再认真学习一下,不要光看,一定要跟着老师的讲解把代码敲一下,才能真正加深理解。
如果解决了你得疑惑,欢迎采纳~
又生出新的疑惑了: 1、public String checkUser(User one,User two),checkUser中的User不是数据类型为什么不报错,如果写成这样 public void checkUser(String one,String two)我是可以理解的,这个User是User类名还是User类的构造函数呢? 是通过package的导入实现的吗?我的代码是凑巧成功的吗? 另外也没有用到equals方法,应该说equals例子解释的是某一个对象的值是否为true,如何使用这个方法来替换"=="呢? test.java public class Test{ // 测试方法 public static void main(String[] args) { //实例化对象,调用相关方法实现运行效果 User us =new User("Lucy","Mike",123456,123456); System.out.println("用户名:"+us.getUser1()); System.out.println("密码:"+us.getPassword1()); System.out.println("用户名:"+us.getUser2()); System.out.println("密码:"+us.getPassword2()); System.out.println("============"); UserManager um=new UserManager(); um.checkUser(us, us); } } User.java public class User { //定义属性用户名、密码 private String user1; private int password1; private String user2; private int password2; public User(String user1,String user2,int password1,int password2){ this.user1=user1; this.user2=user2; this.password1=password1; this.password2=password2; } public String setUser1(){ return user1; } public String getUser1(){ return user1; } public int setPassword1(){ return password1; } public int getPassword1(){ return password1; } public String setUser2(){ return user2; } public String getUser2(){ return user2; } public int setPassword2(){ return password2; } public int getPassword2(){ return password2; } } UserManager.java public class UserManager { // 用户信息验证的方法 public String checkUser(User one,User two) { // 判断用户名是否为空,是否一致 User us=new User("Lucy","Mike",123456,123456); String one=us.getUser1(); String two=us.getUser2(); if(one!="Null"|two!="Null"){ if(one==two){ System.out.println("用户名一致"); }else{ System.out.println("用户名不一致"); } }else{ System.out.println("用户名为空"); } // 判断密码是否为空,是否一致 int password1=us.getPassword1(); int password2=us.getPassword2(); if(password1!=0|password2!=0){ System.out.println("密码一致"); if(password1==password2){ }else{ System.out.println("密码不一致"); } }else{ System.out.println("密码为空"); } return user1+user2; } }
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星