1-13编程代码写完了,但是报错
// 测试方法
public static void main(String[] args) {
//实例化对象,调用相关方法实现运行效果
User one=new User("Lucy","123456");
User two=new User("Mike","123456");
one.info();
System.out.println(one.info());
two.info();
System.out.println(two.info());
System.out.println("============================");
UserManager manage=new UserManager(User one,User two);
}
}
public class User{
//定义属性用户名、密码
String user;
String code;
User(String user,String code){
this.setUser(user);
this.setCode(code);
public void setUser(String user){
this.user=user;
}
public String getUser(){
return this.user;
}
public void setCode(String code){
this.code=code;
}
public String getCode(){
return this.code;
}
}
public String info(){
String str="用户名:"+this.user+"\n密码:"+this.code;
return str;
}
}
public class UserManager{
// 用户信息验证的方法
public String checkUser(User one, User two) {
// 判断用户名是否为空,是否一致
if((one.user !=null) & (two.user !=null)){
if((one.user).equals(two.user)){
System.out.println("用户名一致");
}else
System.out.println("用户名不一致");
}else
System.out.println("用户名不能为空!");
// 判断密码是否为空,是否一致
if((one.code !=null) & (two.code !=null)){
if((one.code).equals(two.code)){
System.out.println("密码一致");
}else
System.out.println("密码不一致");
}else
System.out.println("密码不能为空!");
}
}
要求:
1、 设计构造函数实现对属性赋值
2、 设置私有属性,get/set方法实现对属性的访问
3、用户信息验证判断两个用户信息是否一致
PS: 可以通过equals()方法进行字符串内容的判断,如果内容相等返回值为tru
我感觉没问题啊,使用one.info();返回并且打印了one的信息,two的也是这样。然后实例化UserManager的对象,在构造参数里直接传参,但是各种各样的报错。
正在回答
1、首先,老师是希望同学可以按照老师帮同学找出的错误,请同学重新敲一下代码,只有不断的练习,亲手动手去敲代码,才能更好的掌握知识呦。
2、关于同学的第一个问题:
这里有两种方法有,如果按照同学的方法,就需需要去掉返回值,改成void,如果按照提示的,有返回值的,可以这样写:
package com.imooc; public class UserManager { // 用户信息验证的方法 public String checkUser(User one, User two) { // 判断用户名是否为空,是否一致 String str = ""; if ((one.user != null) | (two.user != null)) { if ((one.user).equals(two.user)) { str = "用户名一致"; if ((one.code != null) | (two.code != null)) { if ((one.code).equals(two.code)) { str += "密码一致"; return str; } else { str += "密码不一致"; return str; } } else { str = "密码不能为空!"; return str; } } else { str = "用户名不一致"; return str; } } else { // 判断密码是否为空,是否一致 str = "用户名不能为空"; return str; } } }
有返回值的情况下,就不需要写输出语句了。我们最后在测试方法中打印返回值的str就可以了。
这个里边就是,有返回值的方法,最后必须返回一个返回值类型的对象回去。
至于这个对象是什么,根据判断条件不同而返回的不同。并且,你要把密码的判断,放到用户名一致且不为空的判断里,如果用户名为空或者用户名不一致,我们根本就不去判断它的密码了,直接把字符串返回回去就可了。
如果按照同学写的写输出方法,就不要写返回值了,改成void.
3、是的,这里同学可以用| 或者||。只要有一个为空,就返回这个信息。
4、如果同学写成if (one.user.equals(two.user))不会报错,但是不建议这样写,这样写起来可读性不高,容易出错,建议同学还是括起来比较好。
5、他们是有交集的呦,这里的管理类中调用的是User,那为啥能拿来直接就用呢?这个是因为他们在同一个包下,如果不在同一个包下,就要通过导包的方式来引用了,因为是在一个包下,它就免了让你去导包这个过程了(在线编辑器中,默认他们是在一个包中的)
所以,要想调用这个checkUser方法,你首先给他它需要的类型的对象做参数的。
package com.imooc; public class UserManager { // 用户信息验证的方法 public String checkUser(User one, User two) { // 判断用户名是否为空,是否一致 String str = ""; if ((one.user != null) | (two.user != null)) { if ((one.user).equals(two.user)) { str = "用户名一致"; if ((one.code != null) | (two.code != null)) { if ((one.code).equals(two.code)) { str += "密码一致"; return str; } else { str += "密码不一致"; return str; } } else { str = "密码不能为空!"; return str; } } else { str = "用户名不一致"; return str; } } else { // 判断密码是否为空,是否一致 str = "用户名不能为空"; return str; } } }
package com.imooc; public class User{ //定义属性用户名、密码 String user; String code; User(String user,String code){ this.setUser(user); this.setCode(code); } public void setUser(String user){ this.user=user; } public String getUser(){ return this.user; } public void setCode(String code){ this.code=code; } public String getCode(){ return this.code; } public String info(){ String str="用户名:"+this.user+"\n密码:"+this.code; return str; } }
package com.imooc; public class Test { // 测试方法 public static void main(String[] args) { //实例化对象,调用相关方法实现运行效果 User one=new User("Lucy","123456"); User two=new User("Mike","123456"); one.info(); System.out.println(one.info()); two.info(); System.out.println(two.info()); System.out.println("============================"); UserManager manage=new UserManager(); String checkUser = manage.checkUser(one, two); System.out.println(checkUser); } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
重发一下,在回复区发的信息没有自动排行,不方便老师观看,这里重新发布。
我看了一下老师你发的代码,有几点疑问:
1、首先,管理类的方法,public String checkUser(User one,User two){}这是系统给的,要求有返回值,这并不是我写的。老师将String改为void。
2、 if((one.user !=null) & (two.user !=null)){
if((one.user).equals(two.user)){
System.out.println("用户名一致");
}else
System.out.println("用户名不一致");
}else
System.out.println("用户名不能为空!");
我对自己之前写的这部分代码有疑问,判断两个用户信息是否为空,使用逻辑运算符时,我应该使用或运算符 |
吧?也就是只要满足一个用户信息为空,就做出提醒?还有,判断用户信息是否一致,我使用大括号将将对象名.方法名给括起来了,如果我不括起来,写成了:if(one.user.equals(two.suer)),老师这会报错吗?
3、最后一个问题是: UserManager manage=new UserManager(User one,User two);,这里我给不存在的带参构造方法传参。肯定错误。老师接下来是使用对象名.方法名:manage.checkUser(one,two)传参,老师,我不能理解的是,此编程有三个类,这里的操作都是在测试类,管理类和User类没有任何交集,系统是怎么认出来传的是是User类的对象one和two呢?
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星