2013-07-23 2 views
-1

ID 및 암호의 유효성을 검사하는 프로그램에서 작업 중이며 유효성 검사에서 무한 루프가 발생한다고 생각합니다. 로그인 버튼을 클릭해도 아무런 변화가 없습니다. 저는 Java를 처음 사용하고 있으며이를 해결하기 위해 무엇을 찾아야할지 아직 모릅니다.로그인 유효성 검사시 무한 루프

public void actionPerformed(ActionEvent e) { 
    success = false; 

    // Sequential search 
    int i = 0; 

    while (i < validID.length) { 
     ; 
    } 

    { 
     if (idField.getText().compareTo(validID[i]) == 0) { 
      if (passwordField.getText().compareTo(validPassword[i]) == 0) { 
       success = true; 
      } 
     } 
     i = i + 1; 
    } 

    if (success == true) { 
     headerLabel.setText("Login successful"); 
     idField.setText(""); 
     passwordField.setText(""); 
     idField.requestFocus(); 
    } else { 
     headerLabel.setText("Unsuccessful. Try Again"); 
     idField.setText(""); 
     passwordField.setText(""); 
     idField.requestFocus(); 
    } 
    repaint(); 
} 
+1

두 번째로 IntelliJ는 코드 서식이 지나치게 복잡하다고 생각했습니다. 내가 틀렸다는 것을 알았습니다. – Makoto

+0

메서드의 첫 번째 줄에 중단 점을 추가하고 코드를 단계별로 실행 해 보았습니까? 데이빗이 말하는 것을 보게 될 것 같아요. – km1

답변

0
int i = 0; 

while (i < validID.length) { 
    ; 
} 

: 여기처럼 그 모습입니다.

+1

정말 고마워요! 그거였다. –

1

이 블록의 목적은 무엇인가 : 다음과 같이

코드는 무엇입니까? validID.length가 가장 가능성이있는 i보다 큰 경우

while (i < validID.length) { 
    ; 
} 

, 그 루프는 종료하지 않습니다.

블록을 이해하기 위해 여분의 중괄호 (및 세미콜론)를 제거하려는 것처럼 보입니다. validID.length가 0보다 큰 경우이 명확 무한 루프입니다

while (i < validID.length) { 
    if (idField.getText().compareTo(validID[i]) == 0) { 
     if (passwordField.getText().compareTo(validPassword[i]) == 0) { 
      success = true; 
     } 
    } 
    i = i + 1; 
}