首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Scanner.next() 讀取字串後用 == 比較導致登入失敗

     編輯:程式設計綜合問答

錯誤程式碼

name = scanner.next();
if (name == "abc" && pass == 123) { // 錯誤:== 比較參考位址
    System.out.println("登陸成功");
}

原因

== 比較的是**物件參考位址**,而非字串內容。scanner.next() 回傳新建立的 String 物件,與字面常量 "abc" 位址不同。

正確寫法

if ("abc".equals(name) && pass == 123) { // 推薦:常量在前防 NPE
    System.out.println("登陸成功");
}
// 或
if (name.equals("abc") && pass == 123) { // 需確保 name != null
}

補充

  • pass == 123 是基本型別 int 比較數值,**正確**。
  • 字串比較永遠用 equals() 或 Objects.equals()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved