2013-04-17 1 views
1

저는 Java 세계에서 초보자입니다. 문자열 배열로 읽는이 프로그램을 작성했습니다 ... 실행하면 결코 멈추지 않습니까? !! 스캔을 끝내려면 무엇을 추가/변경해야합니까?스캔 읽기를 사용하는 자바 프로그램이 실행을 중지하지 않습니다.

import java.util.*; 

public class Ex21 { 
public static void main(String[] args) { 
    int i, n = 5; 
    String c; 
    ArrayList<String>words = new ArrayList<>(); 
    System.out.println("Enter multi strings: "); 
    Scanner input = new Scanner(System.in); 
    boolean loop = true; 
    while(loop) { 
     words.add(input.next()); 
     Collections.sort(words); 
     System.out.println("The sorted list is: " + words); 
    } 
    } 

} 
+3

'while (loop)'의 의미를 이해합니까? – SLaks

+0

while (loop)은 while 루프가 true이면 while을 계속 수행함을 의미합니다. 당신은 거짓 루프를 결코 ... – Infested

+0

당신은 무엇을하려고합니까? – NINCOMPOOP

답변

2

정의상 while 루프 false 평가 (가변 loop이 경우에) 그것의 상태까지 몸을 계속 실행. loopwhile -loop 본문의 false으로 설정하지 않으므로 조건은 결코 false으로 평가되지 않으며 루프가 끝나지 않습니다.

또한 사용자가 입력 한 단어 목록을 정렬하려는 것처럼 보입니다. 루프를 반복 할 때마다 Collections.sort에 전화하는 것을 권하지 않습니다. TreeSet과 같이 요소를 자체적으로 정렬 된 상태로 유지하는 데이터 구조를 사용하는 방법을 살펴볼 수 있습니다. 또는 최소한 루프 바로 뒤에 sort 메서드를 한 번 호출하십시오.

2
while(condition) { 
    /* do something */ 
} 

의미/* 할 조건이 == 거짓, 귀하의 경우에 그것이 사실 alwats하지 않는 것이 * /이 멈추지 않는 이유 즉, 발생합니다. 그래서 자바는 당신의 경우에 괜찮습니다. 이름이 끝나지 않아 말한대로 loop 항상 프로그램의 값 true을 갖는

0

while(loop)는 그래서, endless loop이라고하며이 발생한 것입니다.

루프를 중지하려면 조건이 충족되면 loopfalse으로 설정하거나 키워드 break을 사용하여 루프를 종료해야합니다.

조건은 특정 단어 마녀있는 것은 여기 loopfalse

String word = input.next(); 
boolean loop = ! "exit".equalsIgnoreCase(word); 
while (loop) { 
    words.add(word); 
    Collections.sort(words); 
    System.out.println("The sorted list is: " + words); 
    word = input.next(); 
    loop = ! "exit".equalsIgnoreCase(word); 
} 
System.out.println("Bye!"); 

여기에 설정할 수 있습니다 방법 예입니다,이 입력 될 때 루프를 종료 할 수 있습니다 "exit"

같은 예를 들어있을 수 있습니다 루프를 취소 할 수있는 다른 예입니다. break

while (true) { 
    String word = input.next(); 
    if("exit".equalsIgnoreCase(word)) { 
     break; 
    } 
    words.add(word); 
    Collections.sort(words); 
    System.out.println("The sorted list is: " + words); 
} 
System.out.println("Bye!"); 

단어가 exit은 arraylist가 포함 할 수있는 집합에서 금지된다는 점에 유의하십시오. 프로그램을 저장할 수는 있지만 변경할 수도 있습니다.

+0

감사합니다. – munir

+0

이 답변으로 도움이 될 수 있다면 ;-) 그것을 받아 들일 수 있습니다. – A4L

관련 문제