2015-01-08 4 views
0

사용자에게 아무것도 입력하지 않도록 요청하는 프로그램을 설계했습니다..equalsIgnoreCase를 사용할 때 루프를 어떻게 종료합니까?

사용자가 'STOP'이라는 단어를 입력하면 프로그램이 종료됩니다. 그러나 나는 .equalsIgnoreCase 메서드와 약간 혼동 스럽다. ,

import java.util.Scanner; 
public class Stop { 
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    String name; 
    do { 
     System.out.println("Enter a name: "); 
     name = scan.next(); 
     System.out.println(name); 

     //Keep looping until the name does not equal stop, once it equals stop 
     //then stop the program 
    } while(!name.equalsIgnoreCase("STOP")); 
    System.out.println("Program Terminated!"); 
    scan.close(); 
} 
} 

하지만 내 초기 시도하는 동안, 나는 동안()에 다음 코드를 시도

,

while(name.equalsIgnoreCase("STOP")); 

내가 !을 사용하지 않은 :

가 제대로 작동 코드입니다 왜냐하면 내가 갖고있는 논리는 문자열 이름이 '중지'와 단순히 비교된다는 것입니다. String name = STOP 때 프로그램을 종료하지만 그 코드를 실행하면 프로그램이 하나의 루프 만 종료 한 후에 종료된다는 것을 알았습니다. 사용자가 프로그램에서 입력 한 내용이 한 번 반복 된 후에도 종료되었지만 루핑을 유지할 논리를 설정할 때 name은 STOP과 같지 않습니다. 프로그램이 제대로 작동하기 시작한 이유는 무엇입니까? 초기 시도에서 왜 작동하지 않습니까?

감사합니다.

+0

코드의 첫 번째 버전을 실행할 때'stop'을 입력 해 보셨습니까? 그 결과는 무엇입니까? – dasblinkenlight

+3

'while '은 무슨 뜻인지 아십니까? (java에 존재하지 않는 'until'으로 잘못 입력 한 것 같습니다) – njzk2

+0

특정 조건을 확인하기위한 문. 파일에 다음 줄이있는 동안 루핑을 유지하십시오. –

답변

1

문장이 참일 때 루프가 계속 실행됩니다. 귀하의 경우에는이 의미 : 당신의 이름은 "STOP"을 동일한 경우

while(!name.equalsIgnoreCase("STOP")) 

그래서, 문이 (루프가 실행 유지)가 true를 반환하지만 당신은 당신의 이름만큼 계속 실행 명령문의 결과를 부정하기 때문에 "STOP"과 같지 않습니다.

첫 번째 시도는 이름이 "STOP"인 동안 진술이 true 인 동안 계속 실행됩니다.