我正在嘗試創建一個收集用戶名和密碼的注冊 Jframe 窗口 我正在嘗試創建一個條件,如果密碼不等于確認密碼字段,讓用戶輸入匹配的新密碼。我不斷收到 Jpane 錯誤消息的垃圾郵件,并且在我輸入錯誤的密碼后它不會消失。我嘗試過 for 循環、Do while 循環和常規 while 循環。我試過一些東西這只是創建 JLabel JLabel Register = new JLabel("Register");下一部分是使 Jlabel 與用戶交互 Register.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); Register.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) {當點擊 Register 時,會發生一些事情。這些是我創建的 4 個變量,用于跟蹤用戶輸入。 String password = passwordField.getText(); String confirmpass = passwordField_1.getText(); String name = userName.getText(); String email = createEmail.getText();這是我開始 do while 循環以確認密碼是否匹配的地方,我將重復它 do { JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error", JOptionPane.ERROR_MESSAGE); password = ""; confirmpass = ""; }while(password == confirmpass); dispose(); //System.out.println("Testing the Register Button lol or label " + name);}我希望能夠有一個條件來確保密碼在退出屏幕之前匹配。另外,如果可能的話,有人可以告訴我一種將來自 JFrame 的用戶輸入存儲到數組中的方法。
1 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
用 if 語句替換你的 do-while 循環
//inside onclick function
if(!confirm_pass.equals(password)){
JOptionPane.showMessageDialog(null, "Passwords do not match", "Login Error",
JOptionPane.ERROR_MESSAGE);
return; //the return keyword will stop the method to go further.
}
dispose();
如果密碼不同,do-while 循環將毫無意義,因為它們只會無限循環。equals()此外,在比較字符串時應該使用該方法,而不是使用==.
添加回答
舉報
0/150
提交
取消