2013-09-29 55 views
2

任何人都可以帮我找到这个代码的用户名和密码验证问题。java用户名和密码变化

用户名和密码是预定义的只是检查在Java这个

package org.test; 
import java.util.*; 

class User{ 


    public String username; 
    public String password; 

    public String getUsername() { 
     return username; 

    } 
    public void setUsername(String username) { 
     this.username = username; 

    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 

    } 
    public void chackLogin(){ 
     Auth a = new Auth(); 
     a.authentication(); 
    } 


} 


class Auth{ 

    User u; 
// username and pass 

    String auser="admin"; 
    String apass="admin"; 

    public void authentication(){ 

     if((u.username==auser) && (u.password==apass)) 
     { 
      System.out.println("Login Succseeful sor the user "+" "+auser); 
     } 
     else{ 
      System.out.println("incorrect username or password"); 
     } 


     } 


} 



public class UserAuth { 

    public static void main(String[] args) { 

     //scan Username 
     Scanner user=new Scanner(System.in); 
     String usern= user.next(); 

     //scan password 
     Scanner pass=new Scanner(System.in); 
     String passw= pass.next(); 

     //object of class USEr 
     User u =new User(); 

     //set user and pass 

     u.setUsername(usern); 
     u.setPassword(passw); 
     u.chackLogin(); 



    } 

} 
+0

'String' and'==',... – 2013-09-29 10:50:55

+0

不!没有!!没有!! :( – Maroun

回答

3

字符串比较是使用equals方法做,而不是使用==操作符。修改此条件:

if((u.username==auser) && (u.password==apass)) 

if((u.username).equals(auser) && (u.password).equals(apass))) 

equals两个串而==检查两个引用是否指向同一个存储器对象的内容进行比较。了解更多关于此相关文章的区别:Java String.equals versus ==

+0

修正后,给我这个messege ......在org.test.Auth.authentication(UserAuth.java:43) 异常线程 “main” 显示java.lang.NullPointerException \t \t在org.test。 User.chackLogin(UserAuth.java:27) \t at org.test.UserAuth.main(UserAuth.java:78) –

+0

@ user2828176无论你的u.username还是u.password都是null,你需要在执行之前先进行空检查检查equalitu。 –