這個問題在這里已經有了答案: 如何比較 Java 中的字串? (23 個回答) 2天前關閉。
所以我在學習 java 時只是在做一些基本的測驗,我很好奇為什么這不起作用:
public static void main(String[] args) {
String[] names={"John","Mark","Suzy","Anthony"};
String[] passwords={"passw0rd","CandyC4ne","x5021","ADawg55"};
System.out.println("Please indicate which user you would like to log in as:\n(1)John\n(2)Mark\n(3)Suzy\n(4)Anthony");
Scanner x=new Scanner(System.in);
int y=x.nextInt()-1;
System.out.print("Please enter the password to log into " names[y] "'s account: ");
Scanner a=new Scanner(System.in);
String newpass=a.nextLine();
System.out.println(passwords[y]);
if(passwords[y]==newpass){
System.out.print("Hello " names[y] "!");
}else{
System.out.println("Incorrect Password. " passwords[y] " " newpass);
}
}
passwords[y] 和 newpass 都是完全相同的字串,當我嘗試時:
if(passwords[y]=="passw0rd");
(顯然選擇“約翰”)它確實有效,所以我希望有人可以解釋差異以及如何解決它以便更好地接受用戶輸入。
我也將使用 for 回圈作為答案,但我希望我能避免它。
uj5u.com熱心網友回復:
永遠不要使用 == 來比較字串。始終使用 equals 或 equalsIgnoreCase 方法。== 將檢查指向同一個物件的兩個參考,而 equals 將檢查字串的內容。
uj5u.com熱心網友回復:
使用equals或compareTo方法比較兩個字串,而不是==比較參考。
import java.util.*;
public class Password{
public static void main(String[] args) {
String[] names={"John","Mark","Suzy","Anthony"};
String[] passwords={"passw0rd","CandyC4ne","x5021","ADawg55"};
System.out.println("Please indicate which user you would like to log in as:\n(1)John\n(2)Mark\n(3)Suzy\n(4)Anthony");
Scanner x=new Scanner(System.in);
int y=x.nextInt()-1;
System.out.print("Please enter the password to log into " names[y] "'s account: ");
Scanner a=new Scanner(System.in);
String newpass=a.nextLine();
System.out.println(passwords[y]);
if(passwords[y].equals(newpass)){
System.out.print("Hello " names[y] "!");
}else{
System.out.println("Incorrect Password. " passwords[y] " " newpass);
}
}
}
輸出:
$ javac Password.java && java Password
Please indicate which user you would like to log in as:
(1)John
(2)Mark
(3)Suzy
(4)Anthony
1
Please enter the password to log into John's account: passw0rd
passw0rd
Hello John!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432499.html
