2013-04-02 51 views
0

因此,我有一個非常非常基本的登錄程序,當您輸入正確的憑證時只打印一行。即使我輸入了正確的憑證,它所做的所有事情都是從我的if else語句中輸出錯誤消息。任何幫助將不勝感激。通過命令行進行基本登錄,用戶輸入java無法正常工作

import java.util.Scanner; 

public class Exercise4 
{ 
private static String Username = "javacave"; 
private static String Password = "welcome1"; 

public static void main(String[] args) 
{ 
    System.out.println("Please enter username"); 
    Scanner in = new Scanner(System.in); 
    String UN = in.nextLine(); 

    System.out.println("Please enter password"); 
    Scanner inn = new Scanner(System.in); 
    String PW = inn.nextLine(); 

    if (UN == Username && PW == Password) 
    { 
     System.out.println("User has logged in successfully!"); 
    } 
    else { 
     System.out.println("You have entered the wrong credentials, please try again."); 
    } 
} 
} 

回答

2
(UN == Username && PW == Password) 

應該是:

(UN.equals(Username) && PW.equals(Password)) 

每當你兩個字符串之間的比較,使用equals()檢查值的平等,而不是使用==用來檢查是否兩個引用在內存中是一樣的。

並請,請閱讀Code Conventions for the Java Programming Language

+0

這應該是你在java類中學習的核心功能。確保閱讀字符串庫。祝你的項目好運。 ;) –

+0

非常感謝你,我在你發佈之前就明白了。 –

+0

只需要注意,「每當你比較兩個字符串」應該是「每當你比較兩個對象」。這適用於所有不是原始類型的東西。 ==比較引用,.equals()可以被重載並且可以比較該值。 –