JAVA字符串判断出错,求解
我想实现一个程序,就是首先定义好账号和密码,如果用户输入账号或者密码错误,就提示输入错误。如果正确的话,提示修改,然后再让用户输入准备修改的账号和密码,并且覆盖原账号和密码,为什么我输入错误的账号和密码还是显示正确呢?求解package 郁闷问题;
import java.util.*;;
class admin
{
public String user="admin";
public String pass="admin";
public void setuser(String user)
{
this.user=user;
}
public String getuser()
{
return user;
}
public void setpass(String pass)
{
this.pass=pass;
}
public String getpass()
{
return pass;
}
public boolean panduan()
{
if(user==getuser()&&pass==getpass())
return true;
else
return false;
}
public void test()
{
System.out.println(user+" "+getuser());
}
}
public class Passwords {
public static void main(String[] args) {
// TODO 自动生成的方法存根
admin a=new admin();
System.out.println("请输入用户名!");
Scanner s=new Scanner(System.in);
String n=s.nextLine();
System.out.println("请输入密码!");
String p=s.nextLine();
if(a.panduan()==true)
{
System.out.println("用户名和密码输入正确");
String q,w;
System.out.println("请输入需要修改的用户名!");
q=s.nextLine();
a.setuser(q);
System.out.println("请输入需要修改的密码!");
w=s.nextLine();
a.setpass(w);
System.out.println("修改成功,账号和密码为:"+a.getuser()+
" "+a.getpass());
}
else
System.out.println("输入错误!");
}
}
----------------解决方案--------------------------------------------------------
这样看不出来,你输入的用户名和密码那个页面的action类里怎么处理的。
if(a.panduan()==true)
{
System.out.println("用户名和密码输入正确");
还有这样的判断是不是会有bug你测试下。
----------------解决方案--------------------------------------------------------
在admin的panduan()方法里面,那个if判断你到底是怎么理解的,能不能把业务逻辑搞清楚了,
再写代码。。。还有类建议首字母大写,不过你硬要小写也不会出错。
----------------解决方案--------------------------------------------------------
回复 2楼 java小蚂蚁
反正就是让我觉得郁闷的就是不执行else语句,我是用了equals方法还是不行。。。程序代码:
package 郁闷问题;
import java.util.*;;
class Admin
{
public String user="admin";
public String pass="admin";
public void setuser(String user)
{
this.user=user;
}
public String getuser()
{
return user;
}
public void setpass(String pass)
{
this.pass=pass;
}
public String getpass()
{
return pass;
}
public boolean panduan(Admin a)
{
if(user.equals(a.getuser())&&pass.equals(a.getpass()))
return true;
else
return false;
}
}
public class Passwords {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Admin a=new Admin();
System.out.println("请输入用户名!");
Scanner s=new Scanner(System.in);
String n=s.nextLine();
System.out.println("请输入密码!");
String p=s.nextLine();
if(a.panduan(a))
{
System.out.println("用户名和密码输入正确");
String q,w;
System.out.println("请输入需要修改的用户名!");
q=s.nextLine();
a.setuser(q);
System.out.println("请输入需要修改的密码!");
w=s.nextLine();
a.setpass(w);
System.out.println("修改成功,账号和密码为:"+a.getuser()+
" "+a.getpass());
}
else
System.out.println("输入错误!");
}
}
import java.util.*;;
class Admin
{
public String user="admin";
public String pass="admin";
public void setuser(String user)
{
this.user=user;
}
public String getuser()
{
return user;
}
public void setpass(String pass)
{
this.pass=pass;
}
public String getpass()
{
return pass;
}
public boolean panduan(Admin a)
{
if(user.equals(a.getuser())&&pass.equals(a.getpass()))
return true;
else
return false;
}
}
public class Passwords {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Admin a=new Admin();
System.out.println("请输入用户名!");
Scanner s=new Scanner(System.in);
String n=s.nextLine();
System.out.println("请输入密码!");
String p=s.nextLine();
if(a.panduan(a))
{
System.out.println("用户名和密码输入正确");
String q,w;
System.out.println("请输入需要修改的用户名!");
q=s.nextLine();
a.setuser(q);
System.out.println("请输入需要修改的密码!");
w=s.nextLine();
a.setpass(w);
System.out.println("修改成功,账号和密码为:"+a.getuser()+
" "+a.getpass());
}
else
System.out.println("输入错误!");
}
}
----------------解决方案--------------------------------------------------------
你把比较的两个值都打印出来,
----------------解决方案--------------------------------------------------------
public boolean panduan()
{
if(user==getuser()&&pass==getpass())
return true;
else
return false;
}
这有问题;user是类admin的一个属性,getuser()获得的就是user属性。这当然是true的。
----------------解决方案--------------------------------------------------------
将两个类型转换成相同的,然后再比较,比较的之后,打印出两个比较的值,看有没有问题。
----------------解决方案--------------------------------------------------------