2017-03-15 6 views
-1
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    String a,b; 
    a=jTextField1.getText(); 
    b=Arrays.toString(jPasswordField2.getPassword()); 
    if (a.equals("sam") && b.equals("hi")) { 
     JOptionPane.showMessageDialog(null,"Login"); 
    } 
    else{ 
     JOptionPane.showMessageDialog(null,"Error"); 
    } 
} 

"and"조건에 오류가있는 것 같습니다.IF 부분이 작동하지 않습니다. && 연산자 만 사용하면 else 부분 만 실행됩니다. || 부품이 작동하는 경우 "또는"연산자를 사용할 때 다른 부분 만 실행되는 경우에만 올바르게 작동하는 것 같습니다.

+9

'Arrays.toString()'은 좀 더''hi ''와 다른 뭔가를 반환 할 것입니다.''[\ ​​"hi \"] "' – SilverNak

+0

과 비슷합니다. 필드는 조건의 논리보다 –

+0

Arrays.toString의 문제 – shmakova

답변

0

Arrays.toString(new String[]{"hi"}) ""[hi] "를 반환합니다.

그래서 당신은 b=jPasswordField2.getPassword()[0];b 당신의 ifif (a.equals("sam") && b.equals("[hi]")) 또는 귀하의 값을 변경해야합니다.

0

getpassword 메서드는 암호를 대괄호로 반환합니다. 돌아 오는 것은 이렇게 될 것입니다 : [hi]. 따라서 삭제 괄호를 사용해야합니다. 타격과 같은 코드를 사용하십시오 :

b=b.substring(1,b.length()-1); 

이 코드는 암호 문자열에서 대괄호를 삭제합니다.