2013-09-29 54 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。 –